C#TCP / IP服务器显示为未连接

时间:2016-03-27 21:48:50

标签: c# sockets tcp

出于某种原因,当客户端似乎至少连接到开放端口并向其发送数据包时,我的服务器显示为断开连接。

 clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);


            IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, Convert.ToInt32(PORT));

            //Bind and listen 
            clientSocket.Bind(ipEndPoint);
            clientSocket.Listen(5);

            //Accept incoming 
            clientSocket.BeginAccept(new AsyncCallback(OnAccept), null);

之后这是我的OnAccept方法。

 private void OnAccept(IAsyncResult ar)
    {
        try
        {
            clientSocket.EndAccept(ar);



            if (clientSocket.Connected == true)
            {
                clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), clientSocket);
            }
        }
        catch (Exception ex)
        {
            log.Log(ex.ToString(), 2);
        }
    }

我正在使用开箱即用的客户端连接(我正在使用的东西用于测试目的)然而当我开始连接以收听并点击" connect"在客户端上。客户转向"已连接"状态并开始发送数据包。然而," if(clientSocket.Connected == true)"语句总是失败,即使在它上面运行断点之后也不会出现时间问题。

任何帮助和想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以看来,当我使用异步并按照我的方式进行监听时,我必须在该套接字上接受一个新套接字。

Socket clientSocket2 = clientSocket.EndAccept(ar);

然后获取cliientSocket2上的连接。