使用C#编写socket服务器和客户端程序
时间: 2024-10-22 07:15:23 浏览: 30
在C#中,Socket编程主要用于创建网络通信应用程序,包括服务器和客户端。以下是简要介绍如何编写一个基本的TCP服务器和客户端:
**服务器端:**
1. **引入命名空间**:`using System.Net.Sockets;` 和 `using System.Text;`
2. **创建ServerSocket实例**:通过`Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)`创建监听套接字。
3. **设置端口和绑定地址**:`server.Bind(new IPEndPoint(IPAddress.Any, port))`,`port`是你想要监听的端口号。
4. **开始监听连接**:`server.Listen backlog`,`backlog`是最大同时接受的连接数。
5. **处理客户端连接**:使用`Accept()`方法等待客户端连接,然后创建新的Socket实例进行通信。
**客户端:**
1. **创建Socket实例**:同样使用`Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)`。
2. **连接到服务器**:`client.Connect(serverEndpoint)`,`serverEndpoint`是服务器的IP地址和端口号。
3. **发送和接收数据**:可以使用`Send`方法发送数据,`Receive`方法接收数据,并使用`Encoding.UTF8.GetString`转换成字符串。
**示例代码片段**(简化版):
```csharp
// 服务器端
var listener = new TcpListener(IPAddress.Any, 1234);
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
using (var stream = client.GetStream())
{
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received: {message}");
// ...处理接收到的数据...
}
}
// 客户端
using (var client = new TcpClient())
{
client.Connect("localhost", 1234);
using (var stream = client.GetStream())
{
string data = "Hello Server!";
byte[] sendBuffer = Encoding.ASCII.GetBytes(data);
stream.Write(sendBuffer, 0, sendBuffer.Length);
// ...读取并处理服务器的响应...
}
}
```
阅读全文