同步套接字通信
Socket支持下的網上點對點的通信
服務端實現監聽連接,客戶端實現發送連接請求,建立連接後進行發送和接收數據的功能
服務器端建立一個socket,設置好本機的ip和監聽的端口與socket進行綁定,開始監聽連接請求,當接收到連接請求後,發送確認,同客戶端建立連接,開始與客戶端進行通信。
客戶端建立一個socket,設置好服務器端的IP和提供服務的端口,發出連接請求,接收到服務的確認後,盡力連接,開始與服務器進行通信。
服務器端和客戶端的連接及它們之間的數據傳送均采用同步方式。
Socket
Socket是tcp\ip網絡協議接口。內部定義了許多的函數和例程。可以看成是網絡通信的一個端點。在網絡通信中需要兩個主機或兩個進程。通過網絡傳遞數據,程序在網絡對話的每一端需要一個socket。
Tcp/IP傳輸層使用協議端口將數據傳送給一個主機的特定應用程序,協議端口是一個應用程序的進程地址。傳輸層模塊的網絡軟件模塊要於另一個程序通信,它將使用協議端口,socket是運行在傳輸層的api,使用socket建立連接發送數據要指定一個端口給它。
Socket:
Stream Socket流套接字 Socket提供雙向、有序、無重復的數據流服務,出溜大量的網絡數據。
Dgram socket數據包套接字 支持雙向數據流,不保證傳輸的可靠性、有序、無重復。
Row socket 原始套接字 訪問底層協議
建立socket 用C#
命名空間:using System.Net;using System.Net.Socket;
構造新的socket對象:socket原型:
Public socket (AddressFamily addressFamily,SocketType sockettype,ProtocolType protocolType)
AddressFamily 用來指定socket解析地址的尋址方案。Inte.Network標示需要ip版本4的地址,Inte.NetworkV6需要ip版本6的地址
SocketType參數指定socket類型Raw支持基礎傳輸協議訪問,Stream支持可靠,雙向,基於連接的數據流。
ProtocolType表示socket支持的網絡協議
定義主機對象:
IPEndPoint類:IPEndPoint構造方法 位置:System.Net
原型:1) public IPEndPoint(IPAddress address,int port) 2)public IPEndPoint(long address,int port) 參數1整型int64如123456,參數2端口int32
主機解析:
利用DNS服務器解析主機,使用Dns.Resolve方法
原型:public static IPHostEntry Resolve(string hostname) 參數:待解析的主機名稱,返回IPHostEntry類值,IPHostEntry為Inte.Net主機地址信息提供容器,該容器提供存有IP地址列表,主機名稱等。
Dns.GetHostByName獲取本地主機名稱
原型:public static IPHostEntry GetHostByName(string hostname)
GetHostByAddress
原型:1)public static IPHostEntry GetHostByAddress(IPAddress address) 參數:IP地址 2)public static IPHostEntry GetHostByAddress(string address) IP地址格式化字符串
端口綁定和監聽:
同步套接字服務器主機的綁定和端口監聽
Socket類的Bind(綁定主機),Listen(監聽端口),Accept(接收客戶端的連接請求)
Bind:原型:public void Bind(EndPoint LocalEP)參數為主機對象 IPEndPoint
Listen:原型:public void Listen(int backlog) 參數整型數值,掛起隊列最大值
accept:原型:public socket accept() 返回為套接字對象
演示程序:
IPAddress myip=IPAddress.Parse(“127.0.0.1”);
IPEndPoint myserver=new IPEndPoint(myip,2020);
Socket sock=new Socket(AddressFamily.Inte.Network,SocketType.Stream,ProtocolType.Tcp);
Sock.Bind(myserver);
Sock.Listen(50);
Socket bbb=sock.Accept();
C#.net同步異步SOCKET通訊和多線... • C#.Net同步異步SOCKET通訊和多線... • 用VB編寫異步多線程下載程序 • c#多線程教學(4):線程池和異步編... • 異步調用與多線程關系的眾多不同... • c#多線程:線程池和異步編程 • 多線程,重疊I/O,異步讀寫 命名通...