C# TcpClient异常 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

发布时间 2023-12-17 21:46:42作者: wsk3q

//C# TcpClient抛出异常
Exception thrown: 'System.Net.Sockets.SocketException' in System.dll
由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
经查,winsock 错误号:10057

网上看到一些文章,通常是收发的时候,错误地使用了Server Socket, 而没有使用accept()的返回值。

不过,查了一下代码,我这里的情况不一样。

这里是要求使用IPv6的地址,而传进去的却是IPv4的地址。

//代码如下:

//这里要求使用IPv6
var client = new TcpClient(AddressFamily.InterNetworkV6);
client.Client.DualMode = true;

//但传入的host是IPv4地址,所以抛出异常.
client.Connect(host, port);

如果使用的是IPv4地址的话,把上面的 AddressFamily.InterNetworkV6 改成 AddressFamily.InterNetwork 即可。