C# 服务器向我(客户端)发送两次相同的数据

C# 服务器向我(客户端)发送两次相同的数据,c#,sockets,C#,Sockets,我正在用c#练习套接字编程。我只是连接服务器并接收文本。问题是,例如,如果我连接和断开服务器5次,然后再次连接(即6次),当我从服务器接收数据时,服务器会向我发送6次文本 我正在使用以下方法连接服务器: public void ConnectToServer(string host, int ip) { try { _socket.Connect(host, ip); StartReceive(); } catch (Excepti

我正在用c#练习套接字编程。我只是连接服务器并接收文本。问题是,例如,如果我连接和断开服务器5次,然后再次连接(即6次),当我从服务器接收数据时,服务器会向我发送6次文本

我正在使用以下方法连接服务器:

public void ConnectToServer(string host, int ip)
{
    try
    {
        _socket.Connect(host, ip);
        StartReceive();
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.ToString());
    }
}
连接后,我得到了我想要的。当我想使用此方法断开连接时:

public void DisconnectFromServer()
{
    _socket.Shutdown(SocketShutdown.Both);
    _socket.Disconnect(true);
}
断开连接后,有时我使用ConnectToServer(..)方法重新连接服务器。当我从服务器接收数据时,服务器会向我发送两次相同的数据

我的插座是这样的:

private Socket _socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
我错过了什么?如何断开与服务器的连接?还是服务器有问题


有什么建议吗?

共享发送数据的代码怎么样?我正在通过互联网连接。我只有ip和端口。如果我重新开始调试,它不会发生。您描述的不是TCP的工作方式。TCP连接是唯一的,它们不接收来自其他连接的数据。除非您的
StartReceive
代码中存在复制接收到的数据的逻辑错误,否则您从早期连接中获取数据的唯一其他方法是,如果每次重新连接时服务器都会向您发送数据。对于I站姿,如果服务器正在缓存用于您的IP的数据,请保持断开连接后的数据,然后在您从同一IP重新连接后重新发送缓存的数据。使用数据包嗅探器准确验证服务器实际发送的数据包。请在您的问题中添加
StartReceive()
的代码?