C#发送数据后增加阻塞等待接收数据
时间: 2023-07-12 19:35:20 浏览: 85
如果你想在C#程序中发送数据后等待接收方的响应,可以使用Socket.Receive()方法进行阻塞等待接收数据。该方法会一直等待直到接收方发送数据过来,然后将接收到的数据存储在指定的缓冲区中。
以下是一个简单的示例代码:
```csharp
// 创建Socket对象
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 连接服务器
socket.Connect("127.0.0.1", 8888);
// 发送数据
byte[] sendData = Encoding.UTF8.GetBytes("Hello, Server!");
socket.Send(sendData);
// 接收数据
byte[] recvData = new byte[1024];
int recvLen = socket.Receive(recvData);
string recvStr = Encoding.UTF8.GetString(recvData, 0, recvLen);
Console.WriteLine("Received data: " + recvStr);
// 关闭连接
socket.Shutdown(SocketShutdown.Both);
socket.Close();
```
在上面的代码中,首先创建了一个Socket对象并连接到服务器。然后发送数据并调用Receive()方法阻塞等待接收数据。当接收方发送数据过来后,将接收到的数据存储在recvData缓冲区中,并使用UTF-8编码将其转换为字符串。最后输出接收到的数据并关闭连接。
需要注意的是,如果接收方没有发送数据过来,Receive()方法会一直阻塞等待,直到接收到数据或者超时。因此,建议在使用Receive()方法时设置适当的超时时间,以避免程序一直等待。