首先我們需要建立一個socket
//定義一個Socket
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
這三個參數分别是選擇ipv4或者是ipv6,第二個是選擇socket傳輸資料類型 Dgram是資料包UDP協定常用,Stream是資料流,TCP
常用,第三個參數就是選擇網絡協定類型。
接下來我們開始綁定ip和端口号
IPAddress iPAddress = IPAddress.Parse("192.168.1.5");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, );
//綁定ip和端口号
serverSocket.Bind(iPEndPoint);
将你的IP和端口号綁定上去即可
接下來我們就開始監聽這個socket連接配接的狀态,如果有通信的話我們就可以進行消息處理
//開始監聽端口号
serverSocket.Listen();
//接收一個連接配接
Socket clientSocket = serverSocket.Accept();
string msg = "Hellow World! 你好";
//轉換消息
byte[] data = Encoding.UTF8.GetBytes(msg);
//發送消息
clientSocket.Send(data);
Listen這個監聽的方法的參數代表等待個數,而不是連接配接個數,0代表沒有等待個數,多少都可以。
然後使用Accept這個方法産生一個新的和用戶端連接配接的socket(如果沒有連接配接,代碼會停留在監聽的的部分等待,直到有用戶端連接配接才會執行下面的代碼)。
後面就是将我們的消息轉換成位元組流發送給用戶端,通過Send()方法,轉換字元串這裡使用了UTF8的格式GetBytes()方法,這個格式可以轉換中文,同樣的接受也需要使用UTF8的格式使用GetString()方法接受。
下面我們就要在伺服器接收用戶端發送的消息了
//接收消息
byte[] dataBuffer = new byte[];//開辟接收空間
int count = clientSocket.Receive(dataBuffer);//擷取消息的位元組長度
string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, , count);//讀取從0開始到位元組長度部分的資料,将多餘的空白位元組踢去
//輸出接收的資訊
Console.WriteLine(msgReceive);
//關閉連接配接
clientSocket.Close();//關閉和用戶端Accept産生的Socket連接配接
serverSocket.Close();//關閉自己的Socket連接配接
完整代碼
/// <summary>
/// 同步接收資料
/// </summary>
void StartSeverSync()
{
//定義一個Socket
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//本機ip:192.168.1.5
// IPAddress iPAddress = new IPAddress (new byte[] { 192,168,1,5 });
IPAddress iPAddress = IPAddress.Parse("192.168.1.5");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, );
//綁定ip和端口号
serverSocket.Bind(iPEndPoint);
//開始監聽端口号
serverSocket.Listen();
//接收一個連接配接
Socket clientSocket = serverSocket.Accept();
string msg = "Hellow World! 你好";
//轉換消息
byte[] data = Encoding.UTF8.GetBytes(msg);
//發送消息
clientSocket.Send(data);
//接收消息
byte[] dataBuffer = new byte[];
int count = clientSocket.Receive(dataBuffer);
string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, , count);
Console.WriteLine(msgReceive);
//關閉連接配接
clientSocket.Close();
serverSocket.Close();
}