c# socket如何实现通信

avatar
作者
猴君
阅读量:0

在C#中,使用Socket类可以实现客户端和服务器之间的通信。下面是一个简单的示例,展示了如何使用Socket类创建一个TCP服务器和客户端并进行通信。

1. 创建TCP服务器

using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;  class TcpServer {     static void Main(string[] args)     {         int port = 5000;         IPAddress localAddr = IPAddress.Parse("127.0.0.1");          Socket listener = new Socket(localAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);          try         {             listener.Bind(new IPEndPoint(localAddr, port));             listener.Listen(10);              while (true)             {                 Console.WriteLine("等待客户端连接...");                 Socket handler = listener.Accept();                 string data = null;                  // 读取客户端发送的数据                 byte[] bytes = new byte[1024];                 int i = handler.Receive(bytes);                 data += Encoding.ASCII.GetString(bytes, 0, i);                  Console.WriteLine("收到消息: " + data);                  // 向客户端发送数据                 string response = "服务器已收到消息";                 byte[] msg = Encoding.ASCII.GetBytes(response);                 handler.Send(msg);                  handler.Shutdown(SocketShutdown.Both);                 handler.Close();             }         }         catch (Exception e)         {             Console.WriteLine("发生错误: " + e.ToString());         }         finally         {             listener.Close();         }     } } 

2. 创建TCP客户端

using System; using System.Net; using System.Net.Sockets; using System.Text;  class TcpClient {     static void Main(string[] args)     {         string server = "127.0.0.1";         int port = 5000;          try         {             Socket client = new Socket(IPAddress.Parse(server).AddressFamily, SocketType.Stream, ProtocolType.Tcp);              client.Connect(new IPEndPoint(IPAddress.Parse(server), port));              string message = "你好,服务器!";             byte[] msg = Encoding.ASCII.GetBytes(message);             client.Send(msg);              byte[] bytes = new byte[1024];             int i = client.Receive(bytes);             string response = Encoding.ASCII.GetString(bytes, 0, i);             Console.WriteLine("收到消息: " + response);              client.Shutdown(SocketShutdown.Both);             client.Close();         }         catch (Exception e)         {             Console.WriteLine("发生错误: " + e.ToString());         }     } } 

在这个示例中,我们创建了一个TCP服务器,监听端口5000上的客户端连接。当客户端连接到服务器时,服务器会读取客户端发送的数据,并向客户端发送确认消息。同样,我们也创建了一个TCP客户端,连接到服务器并发送一条消息,然后接收服务器的响应。

请注意,这个示例仅用于演示目的,实际应用中可能需要考虑更多的错误处理和功能实现。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!