阅读量: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客户端,连接到服务器并发送一条消息,然后接收服务器的响应。
请注意,这个示例仅用于演示目的,实际应用中可能需要考虑更多的错误处理和功能实现。