用c#的tcpclient写一个服务器和客户端进行通讯
时间: 2024-04-13 07:28:09 浏览: 159
好的,下面是使用 C# 的 TCPClient 写一个简单的服务器和客户端进行通讯的示例:
服务器端代码:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main()
{
// 创建一个监听的 Socket 对象
TcpListener listener = new TcpListener(IPAddress.Any, 8888);
listener.Start();
Console.WriteLine("服务器已启动,等待客户端连接...");
// 等待客户端连接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("客户端已连接!");
// 获取客户端的网络流对象
NetworkStream 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("收到客户端消息: " + message);
// 回复客户端
string response = "Hello, client!";
byte[] responseBytes = Encoding.ASCII.GetBytes(response);
stream.Write(responseBytes, 0, responseBytes.Length);
Console.WriteLine("已回复客户端消息");
// 关闭连接
client.Close();
listener.Stop();
}
}
```
客户端代码:
```csharp
using System;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main()
{
// 创建一个 TCPClient 对象,并连接到服务器
TcpClient client = new TcpClient();
client.Connect("服务器地址", 8888);
// 获取网络流对象
NetworkStream stream = client.GetStream();
// 发送消息给服务器
string message = "Hello, server!";
byte[] messageBytes = Encoding.ASCII.GetBytes(message);
stream.Write(messageBytes, 0, messageBytes.Length);
Console.WriteLine("已发送消息给服务器");
// 接收服务器的响应
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到服务器响应: " + response);
// 关闭连接
client.Close();
}
}
```
在上面的代码中,服务器端通过创建一个 TcpListener 对象监听指定的 IP 地址和端口号,然后等待客户端连接。一旦有客户端连接成功,就获取客户端的网络流对象,接收客户端发送的消息,并回复消息给客户端。最后关闭连接。
客户端通过创建一个 TcpClient 对象,并连接到服务器的 IP 地址和端口号。然后获取网络流对象,发送消息给服务器,并接收服务器的响应。最后关闭连接。
需要注意的是,这只是一个简单的示例,实际应用中可能需要更多的错误处理和异常处理。另外,具体使用方式可能因不同的场景和需求而有所不同,这里只是简单展示了一个基本的 TCPClient 的使用示例。
阅读全文