国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

詳解C# Socket簡單例子(服務器與客戶端通信)

2019-10-29 21:17:59
字體:
來源:轉載
供稿:網友

這個例子只是簡單實現(xiàn)了如何使用 Socket 類實現(xiàn)面向連接的通信。

注意:此例子的目的只是為了說明用套接字寫程序的大概思路,而不是實際項目中的使用程序。在這個例子中,實際上還有很多問題沒有解決,如消息邊界問題、端口號是否被占用、消息命令的解析問題等。。

下面是兩個程序的代碼,(兩個程序均為控制臺程序)

先發(fā)服務端的(Server)完整代碼如下:

引入命名空間:

using System.Net.Sockets; using SystemNet; using SystemThreading; 

完整代碼如下:

namespace SocketServer {   class Program   {     private static byte[] result = new byte[1024];     private static int myProt = 8885;  //端口     static Socket serverSocket;     static void Main(string[] args)     {       //服務器IP地址       IPAddress ip = IPAddressParse("1");       serverSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);       serverSocketBind(new IPEndPoint(ip, myProt)); //綁定IP地址:端口       serverSocketListen(10);  //設定最多10個排隊連接請求       ConsoleWriteLine("啟動監(jiān)聽{0}成功", serverSocketLocalEndPointToString());       //通過Clientsoket發(fā)送數(shù)據(jù)       Thread myThread = new Thread(ListenClientConnect);       myThreadStart();       ConsoleReadLine();     }      /// <summary>     /// 監(jiān)聽客戶端連接     /// </summary>     private static void ListenClientConnect()     {       while (true)       {         Socket clientSocket = serverSocketAccept();         clientSocketSend(EncodingASCIIGetBytes("Server Say Hello"));         Thread receiveThread = new Thread(ReceiveMessage);         receiveThreadStart(clientSocket);       }     }      /// <summary>     /// 接收消息     /// </summary>     /// <param name="clientSocket"></param>     private static void ReceiveMessage(object clientSocket)     {       Socket myClientSocket = (Socket)clientSocket;       while (true)       {         try         {           //通過clientSocket接收數(shù)據(jù)           int receiveNumber = myClientSocketReceive(result);           ConsoleWriteLine("接收客戶端{0}消息{1}", myClientSocketRemoteEndPointToString(), EncodingASCIIGetString(result, 0, receiveNumber));         }         catch(Exception ex)         {           ConsoleWriteLine(exMessage);           myClientSocketShutdown(SocketShutdownBoth);           myClientSocketClose();           break;         }       }     }   } } 

以上是服務端(server)的完整代碼。

客戶端(Client)的完整代碼如下:

引入命名空間:

using SystemNet; using SystemNetSockets; using SystemThreading; 

完整代碼:

namespace SocketClient {   class Program   {     private static byte[] result = new byte[1024];     static void Main(string[] args)     {       //設定服務器IP地址       IPAddress ip = IPAddressParse("1");       Socket clientSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);       try       {         clientSocketConnect(new IPEndPoint(ip, 8885)); //配置服務器IP與端口         ConsoleWriteLine("連接服務器成功");       }       catch       {         ConsoleWriteLine("連接服務器失敗,請按回車鍵退出!");         return;       }       //通過clientSocket接收數(shù)據(jù)       int receiveLength = clientSocketReceive(result);       ConsoleWriteLine("接收服務器消息:{0}",EncodingASCIIGetString(result,0,receiveLength));       //通過 clientSocket 發(fā)送數(shù)據(jù)       for (int i = 0; i < 10; i++)       {         try         {           ThreadSleep(1000);  //等待1秒鐘           string sendMessage = "client send Message Hellp" + DateTimeNow;           clientSocketSend(EncodingASCIIGetBytes(sendMessage));           ConsoleWriteLine("向服務器發(fā)送消息:{0}" + sendMessage);         }         catch         {           clientSocketShutdown(SocketShutdownBoth);           clientSocketClose();           break;         }       }       ConsoleWriteLine("發(fā)送完畢,按回車鍵退出");       ConsoleReadLine();     }   } } 

編譯成功后,先運行 服務端(server),再運行客戶端(client)即可達到通信效果。

效果如下圖:

c#,socket,例子,客戶端和服務器通信

該程序已在局域網測試通過。(192.168.X.X)

 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝丰县| 通州市| 屯门区| 牙克石市| 晋中市| 永登县| 大同县| 德化县| 兴文县| 乌兰察布市| 永胜县| 旌德县| 水城县| 株洲市| 巧家县| 盘锦市| 和顺县| 襄城县| 荆州市| 牡丹江市| 辽源市| 抚顺县| 南召县| 含山县| 丰城市| 湟中县| 上饶县| 星子县| 岗巴县| 武汉市| 三门县| 七台河市| 九龙坡区| 滦平县| 河池市| 长兴县| 张北县| 于田县| 安仁县| 马鞍山市| 遂溪县|