小编Mar*_* F.的帖子

C#异步套接字服务器接收问题

我已经在这里实现了关于这篇文章的服务器应用程序:http://www.codeguru.com/csharp/csharp/cs_network/sockets/article.php/c8781#Client1

总结:我正在使用异步套接字ala BeginAccept(..),BeginReceive(..).我的服务器能够处理多个客户端,一切正常,直到客户端执行两个或更多同步发送操作,而无需等待一段时间.客户端没有收到任何错误,因此没有得到通知,服务器没有收到第二条消息!如果客户等待约.第一次发送操作后100ms,一切正常.我认为当我使用TCP时,我可以确保服务器收到消息.(除了抛出异常)!你能帮我解决一下吗?

这是我在服务器中实现的WaitForData(..)和OnDataReceive(..)方法

public void WaitForData(MyClient client)
{
    try
    {
        if (pfnCallBack == null)
        {
            pfnCallBack = new AsyncCallback(OnDataReceived);
        }

        iarResult = client.Socket.BeginReceive(client.DataBuffer,
                                                0, client.DataBuffer.Length,
                                                SocketFlags.None,
                                                pfnCallBack,
                                                client);
    }
    catch (SocketException se)
    {
        MessageBox.Show("SocketException@WaitForData" + se.Message);
    }
}
public void OnDataReceived(IAsyncResult asyn)
{
    try
    {
        MyClient user= (MyClient)asyn.AsyncState;
        int iRx = user.Socket.EndReceive(asyn);

        byte[] receivedData = user.DataBuffer;

        MemoryStream memStream = new MemoryStream();
        BinaryFormatter binForm = new BinaryFormatter();
        memStream.Write(receivedData, 0, receivedData.Length);
        memStream.Seek(0, SeekOrigin.Begin);
        MyMessage msg = (MyMessage)binForm.Deserialize(memStream);

        switch …
Run Code Online (Sandbox Code Playgroud)

c# sockets client asynchronous

3
推荐指数
1
解决办法
4895
查看次数

标签 统计

asynchronous ×1

c# ×1

client ×1

sockets ×1