客户端在断开连接之前不发送所有数据

时间:2011-07-07 14:23:36

标签: c# client-server

我目前正在研究服务器/客户端,基本功能已基本完成。但是我在关闭并打开测试客户端程序后发送数据时遇到了问题。

这是我的断开连接方法的样子:

public void Disconnect()
    {
        if (m_clientSocket != null)
        {
            m_clientSocket.Shutdown(SocketShutdown.Receive);
        }
    }

测试数据如下所示:

Client cl = new Client(888, "127.0.0.1");
        cl.Connect(null);
        cl.DataArrived += MyListenerMethod;
        cl.Disconnect();

        cl.Connect("hello");
        cl.SendData("hello2");

现在的问题是,当我关闭并重复启动客户端程序时,它有时会发送“hello”和“hello2”,有时只会发出“hello”。 我很确定这是按照设计工作但我希望在程序终止之前发送所有数据,我猜我必须使用延迟或类似的东西来实现这一点。我知道这似乎是一个微不足道的问题,但我想知道这是否可能。

1 个答案:

答案 0 :(得分:0)

听起来套接字正在缓冲要发送的数据,但是在关闭时不会刷新套接字。结果是,如果您尝试过早关闭套接字,则永远不会发送缓冲数据。

根据这篇博客文章,您可能会对NetworkStream课程感到更幸运。

(或者使用WCF或.Net远程处理并让它处理所有这些混乱的东西)