代码如下:
TcpClient FTcpClient=new TcpClient();
FTcpClient.ReceiveTimeout = 10;
FTcpClient.SendTimeout = 10;
Host = "127.0.0.1";
Port = 9000;
pClient.ConnectSvr()
FTcpclient.DisconnectSvr();
FTcpClient.ConnectSvr();            -->这里报错,10056错误, 错误信息是Socket is already connected            public bool ConnectSvr()
            {
                try
                {
                    if (!FTcpClient.Connected)
                        FTcpClient.Connect(FHost, FPort);
                    return true;
                }
                catch (SocketException e)
                {
                    return false;
                }
            }            public void DisconnectSvr()
            {
                if (FTcpClient.Connected)
                {
                    FTcpClient.Client.Shutdown(SocketShutdown.Both);
                    FTcpClient.Client.Close();
                }
            }始终没弄明白这是为什么,大家能指点一下嘛,谢谢了

解决方案 »

  1.   

    pClient.ConnectSvr()还占用着socket的啊!
    先pClient.DisconnectSvr()
      

  2.   

    同意,先断再连,一定要close()
      

  3.   

    pClient.ConnectSvr()
    这句有些不同啊?
      

  4.   

    public void DisconnectSvr()
                {
                    if (FTcpClient.Connected)
                    {
                        FTcpClient.Client.Shutdown(SocketShutdown.Both);
                        FTcpClient.Client.Close();
                    }
                }
    客户端虽然是断开了。但服务器端是如何实现关闭当前连接的?
      

  5.   

    pClient.ConnectSvr() 《--- ???
    FTcpclient.DisconnectSvr();
    FTcpClient.ConnectSvr(); -->这里报错,10056错误, 错误信息是Socket is already connected
      

  6.   

    我想知道,你服务器端怎么写的?
    还有就是里面有
    Host = "127.0.0.1";
    Port = 9000;
    但ConnectSvr()方法里又是
    FTcpClient.Connect(FHost, FPort);
    这里是怎么回事?