首页 > 解决方案 > WinError: 10054 (0x2746) 现有连接被远程主机强行关闭。TCP 服务器

问题描述

我有 C# 中的客户端从 Unity 运行,就是这样

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");
                }
            }

ioctlsocket(ClientSocket, FIONBIO, &iMode)在将它们放入 ClientSockets 数组之前,我已经使套接字的非阻塞。

标签: c#unity3dtcpwinsock

解决方案


解决它。我的问题是客户端的套接字是在函数内部创建的,所以在函数执行完成后它就消失了。


推荐阅读