HTTP:超文本傳輸協議,首先它是一個協議,並且是基於TCP/IP協議基礎之上的應用層協議。TCP/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,HTTP是應用層協議,主要解決如何包裝數據。HTTP協議詳細規定了瀏覽器與服務器之間相互通信的規則,是萬維網交換信息的基礎。HTTP是基於請求-響應形式並且是短連接,並且是無狀態的協議。針對其無狀態特性,在實際應用中又需要有狀態的形式,因此一般會通過session/cookie技術來解決此問題。
Socket:Socket不屬於協議范疇,而是一個調用接口(API),Socket是對TCP/IP協議的封裝,通過調用Socket,才能使用TCP/IP協議。Socket連接是長連接,理論上客戶端和服務器端一旦建立連接將不會主動斷開此連接。Socket連接屬於請求-響應形式,服務端可主動將消息推送給客戶端。
1. 使用.NET4.5 自帶的WebSocket
服務端:
var listener = new HttpListener();
listener.Prefixes.Add("http://*:8080/");
listener.Start();
var context = await listener.GetContextAsync();
var wsContext = await context.AcceptWebSocketAsync(null);
var ws = wsContext.WebSocket;
客戶端:
var ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("ws://127.0.0.1:8080"), CancellationToken.None);
2. 使用 websocket-sharp dll提供的 WebSocket(支持.NET4.0)
客戶端:
_caiNiaoWs = new WebSocket(WsUrl);
_caiNiaoWs.OnMessage += (sender, e) => OnMessage(e.Data);
_caiNiaoWs.Connect();
3. 使用 Socket 類(支持.NET4.0)
http://blog.csdn.net/qq_29701359/article/details/53130050