关于网络程序设计
 
我的服务器使用的完成端口-工作线程两个,客户端socket2连接,  
 
当一个客户端发消息频率高的时候,部分消息丢失,  
 
如;客户端循环100次发消息,服务器端一般能接到第1,2,63,条,其他的都丢失  
 
敬请教我,不盛感激1  

解决方案 »

  1.   

    下面是工作现成的代码(delphi)
    procedure TWorkerThread.Execute;
    var
      Block: PBlock;
      Transfered: DWORD;
      ClientSocket: TServerClientSocket;
    begin
      while FServer.Active do
      begin
        Block := nil;
        Transfered := 0;
        ClientSocket := nil;
         
        if not GetQueuedCompletionStatus(FServer.CompletionPort, Transfered,
          DWORD(ClientSocket), POverlapped(Block), INFINITE) then
        begin    end;    case ClientSocket.WorkBlock(Block, Transfered) of  
        //WorkBlock读取数据,调用WSARecv
        //(WSARecv(FSocket, @wsaBuffer, 1, Transfer, Flags, @Overlapped, nil);)
          RESPONSE_UNKNOWN:
            { 操作未知的话,应该返回给客户端:...不应该Close....保留 }
            //FreeAndNil(ClientSocket);
            ;
          RESPONSE_FAIL:
          begin
          end;
        end;
      end;
    end;
      

  2.   

    楼上说的是tcp的机制问题
    不知道楼主的问题是不是这个原因?
      

  3.   

    VC网络版怎么贴DELPHI的代码^_^