日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

socket通信(C#)

發布時間:2024/8/26 C# 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket通信(C#) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?通信兩端分別為客戶端(Client)和服務器(Server):

統一編碼格式:【Encoding.UTF8】

測試環境:

需要啟動誰就將誰設為啟動項:?

(先啟動Server,后啟動Client)

?

服務器(Server):

1:建立一個Socket對像;

2:用socket對像的Bind()方法綁定EndPoint;

3:用socket對像的Listen()方法開始監聽;

4:接受到客戶端的連接,用socket對像的Accept()方法創建新的socket對像用于和請求的客戶端進行通信;

5:用新的socket對象接收(Receive)和發送(Send)消息。

服務器編碼:

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;namespace Socket_Server {class Program{static Socket ReceiveSocket;static void Main(string[] args){int port = 8885;//偵聽所有網絡客戶接口的客活動IPAddress ip = IPAddress.Any;//使用指定的地址簇協議、套接字類型和通信協議 <br> ReceiveSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);//有關套接字設置ReceiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint endPoint = new IPEndPoint(ip, port);ReceiveSocket.Bind(new IPEndPoint(ip, port)); //綁定IP地址和端口號ReceiveSocket.Listen(10); //設定最多有10個排隊連接請求Console.WriteLine("建立連接");Socket socket = ReceiveSocket.Accept();byte[] receive = new byte[1024];socket.Receive(receive);Console.WriteLine("接收到消息:" + Encoding.UTF8.GetString(receive));byte[] send = Encoding.UTF8.GetBytes("成功接收消息,并回發消息。");socket.Send(send);Console.WriteLine("發送消息為:" + Encoding.UTF8.GetString(send));}} }

啟動Server等待客戶端訪問:需要安全權限,點擊【允許訪問即可】

客戶端(Client):

1:建立一個Socket對像;

2:用socket對像的Connect()方法以上面建立的EndPoint對像做為參數,向服務器發出連接請求;

3:如果連接成功,就用socket對像的Send()方法向服務器發送信息;

4:用socket對像的Receive()方法接受服務器發來的信息?;

5:通信結束后一定記得關閉socket;

客戶端編碼:

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;namespace Socket_demo {class Program{static Socket ClientSocket;static void Main(string[] args){string IP = "127.0.0.1";int port = 8885;//將IP地址字符串轉換成IPAddress實例IPAddress ip = IPAddress.Parse(IP); //使用指定的地址簇協議、套接字類型和通信協議ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 用指定的ip和端口號初始化IPEndPoint實例IPEndPoint endPoint = new IPEndPoint(ip, port); ClientSocket.Connect(endPoint); //與遠程主機建立連接Console.WriteLine("開始發送消息");//通信時實際發送的是字節數組,所以要將發送消息轉換字節byte[] message = Encoding.UTF8.GetBytes("客戶端鏈接127.0.0.1:8885服務器"); ClientSocket.Send(message);Console.WriteLine("發送消息為:" + Encoding.UTF8.GetString(message));byte[] receive = new byte[1024];int length = ClientSocket.Receive(receive);//length 接收字節數組長度Console.WriteLine("接收消息為:" + Encoding.UTF8.GetString(receive));ClientSocket.Close();//關閉連接}} }

啟動Client客戶端,訪問服務器:

?訪問成功:?

?如果Server服務端未啟動則為:

服務端Server接收到的消息:

創建socket線程

Thread t = new Thread(()=>{});

//將監聽放在死循環內

while(true){

? ? ? ? socket監聽

}

//啟動線程
t.Start();

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace Socket_Server {class Program{static Socket ReceiveSocket;static void Main(string[] args){//創建socket線程Thread t = new Thread(()=> {int port = 8885;//偵聽所有網絡客戶接口的客活動IPAddress ip = IPAddress.Any;//使用指定的地址簇協議、套接字類型和通信協議 <br> ReceiveSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);//有關套接字設置ReceiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint endPoint = new IPEndPoint(ip, port);ReceiveSocket.Bind(new IPEndPoint(ip, port)); //綁定IP地址和端口號ReceiveSocket.Listen(10); //設定最多有10個排隊連接請求Console.WriteLine("建立連接");while (true){Socket socket = ReceiveSocket.Accept();byte[] receive = new byte[1024];socket.Receive(receive);Console.WriteLine("接收到消息:" + Encoding.UTF8.GetString(receive));byte[] send = Encoding.UTF8.GetBytes("成功接收消息,并回發消息。");socket.Send(send);Console.WriteLine("發送消息為:" + Encoding.UTF8.GetString(send));}});//啟動線程t.Start();}} }

啟動服務器,服務器端可以無限次數的接收客戶端信息了。

到這里,Socket的基礎技能講解就完畢了,可以通過這個技能在工作中主要會進行推送功能編碼,【推送】是一個非常重要的功能,你手機里的各種推送廣告、APP的各種消息推送、最最基礎的QQ、微信的聊天功能都依賴于此項技術。后面會對【Web Socket】進行講解,關注好,后面直接查看此【分類專欄】即可。

作業項目,通過此demo,自行搭建Winform項目,進行Socket服務器端,與Client客戶端,進行信息交互。

可以分開兩個機器,使用【ipconfig】查看各自的IP,使用【ping】命令測試網絡是否通暢,設置好對應的端口號進行相互訪問即可完成通信功能。

總結

以上是生活随笔為你收集整理的socket通信(C#)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。