如何解决WinError: 10054 (0x2746) 远程主机强行关闭了现有连接 TCP服务器
我有从 Unity 运行的 C# 客户端,仅此而已
byte[] buffer = { 1 };
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
s.Connect(IP,PORT);
System.Int32 Result = s.Send(buffer);
Debug.Log(Result);
服务器端是用C写的,真的很长所以这里是我出错的地方
for(char i = 0; i < MAX_PLAYERS; ++i)
{
if(ClientSockets[i] == INVALID_SOCKET) break;
Result = recv(ClientSockets[i],Message,sizeof(Message),0);
if (Result == SOCKET_ERROR)
{
unsigned long LastError = GetLastError();
if (LastError != 10035)
{
Error("recv failed.\n");
}
}
在将套接字放入 ClientSockets 数组之前,我已使用 ioctlsocket(ClientSocket,FIONBIO,&iMode)
使套接字非阻塞。
解决方法
修复了它。我的问题是客户端的套接字是在函数内部创建的,因此在函数执行完毕后它就消失了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。