C#中Socket通信用法实例详解

2019-12-26 13:33:16丽君

二、TCP方式:

服务器端代码:

 

 
  1. Socket serverSocket = null;  Thread clientThread = null; 
  2. Socket clientSocket = null;  Thread thread = null; 
  3. IPAddress ips = null;  PEndPoint ipep = null; 
  4. void ServerStart()  { 
  5. ips = Dns.GetHostAddresses(Dns.GetHostName())[0];  //创建IPEndPoint实例  
  6. ipep = new IPEndPoint(ips, 9050);  //创建一个套接字  
  7. serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  serverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 
  8. //将所创建的套接字与IPEndPoint绑定   serverSocket.Bind(ipep); 
  9. //设置套接字为收听模式   serverSocket.Listen(20); 
  10. while (listenalive)  { 
  11. try  { 
  12. //在套接字上接收接入的连接   clientSocket = serverSocket.Accept(); 
  13. clientThread = new Thread(new ParameterizedThreadStart(ReceiveData));  clientThread.Start(clientSocket); 
  14. }  catch (Exception ex) 
  15. {  WriteErrorLog(ex.Message); 
  16. serverSocket.Close();  serverSocket = null; 
  17. }  } 
  18. }  static void ReceiveData(object obj) 
  19. {  bool keepalive = true; 
  20. Socket s = obj as Socket;  Byte[] buffer = new Byte[1024]; 
  21. //根据收听到的客户端套接字向客户端发送信息   IPEndPoint clientep = (IPEndPoint)s.RemoteEndPoint; 
  22. Console.WriteLine("客户端ip:" + clientep.Address + " 端口:" + clientep.Port);  string welcome = "连接服务器成功"; 
  23. buffer = System.Text.Encoding.Unicode.GetBytes(welcome);  //向客户端发送“连接服务器成功”消息 
  24. s.Send(buffer, buffer.Length, SocketFlags.None);  buffer = new Byte[1024]; 
  25. int bufLen = 0;  string content = string.Empty;