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

歡迎訪問 生活随笔!

生活随笔

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

C#

C# 服务端监听客户端连接

發布時間:2024/3/24 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 服务端监听客户端连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需要建立兩個工程:一個客戶端、一個服務端

//服務端測試代碼 using System; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Collections; namespace SimpleServer {class Program{static void Main(string[] args){IpType();}private static void IpType(){//IP地址IPAddress ipaddr = IPAddress.Parse("127.0.0.1");IPEndPoint endPoint = new IPEndPoint(ipaddr, 33678);Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//綁定連接,一定要在監聽之前socket.Bind(endPoint);//開始監聽,最大支持同時5個連接socket.Listen(5);while(true){//如果未檢測到連接,將阻塞,不再繼續執行Socket clientSocket = socket.Accept();byte[] data = new byte[512];//第一次握手,接收到數據確認鏈接成功clientSocket.Receive(data, 0, data.Length, SocketFlags.Partial);string s = System.Text.Encoding.Default.GetString(data);Console.WriteLine(s.Split('\0')[0]);//啟動新線程處理客戶端的連接信息Task.Factory.StartNew(() =>{reciiveFromClient(clientSocket);});}}private static void reciiveFromClient(Socket client){byte[] data;try{while (true){//第二次握手,告訴客戶端,服務端已準備好client.Send(System.Text.Encoding.Default.GetBytes("GoOn"));data = new byte[512];//第三次握手,接受數據client.Receive(data, SocketFlags.None);string str = System.Text.Encoding.Default.GetString(data);//創建隊列Queue clientQ = new Queue();if (clientQ.Equals(data))//判斷數據是否已在隊列中,如果不在先添加進隊列{}else{//往對列添加數據clientQ.Enqueue(data);}if (str.StartsWith("_quit")){//如果檢測到_quit,關閉連接client.Close();Console.WriteLine("連接關閉");break;}else{//控制臺打印數據string info = str.Split('\0')[0];Console.WriteLine("From Client :" + info);}}} catch(SocketException e){//處理異常}}} }//客戶端測試代碼 using System; using System.Net; using System.Net.Sockets; namespace SimpleClient {class Program{static void Main(string[] args){while(true){Client();//關閉連接后可提示繼續連接Console.WriteLine("End Client");Console.WriteLine("是否繼續?是[Y]/否[N]");string ss = Console.ReadLine();if(!(ss == "Y" || ss == "y")){break;}}}private static void Client(){//指定要連接的服務器IP,本機是127.0.0.1IPAddress ip = IPAddress.Parse("127.0.0.1");//端口號EndPoint ep = new IPEndPoint(ip, 33678);Socket client = new Socket(SocketType.Stream, ProtocolType.Tcp);//連接到指定主機client.Connect(ep);string s = "Hello, Server";byte[] data = System.Text.Encoding.Default.GetBytes(s);//第一次握手,告訴服務器我已經連接client.Send(data, SocketFlags.Partial);while (true){//第二次握手,確認服務端已準備好client.Receive(data);//第三次握手,從鍵盤讀取數據string info = Console.ReadLine();//轉換數據類型data = System.Text.Encoding.Default.GetBytes(info);//傳輸數據到服務器client.Send(data);if (info.StartsWith("_quit")){break;}}//關閉連接client.Close();}} }

轉載于:https://my.oschina.net/CarrieLiu/blog/1576658

總結

以上是生活随笔為你收集整理的C# 服务端监听客户端连接的全部內容,希望文章能夠幫你解決所遇到的問題。

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