socket高难问题之完成端口1

chenayuan 2004-10-28 09:44:09
关于网络程序设计-delphi

我的服务器使用的完成端口-工作线程两个,客户端socket2连接,

当一个客户端发消息频率高的时候,部分消息丢失,

如;客户端循环100次发消息,服务器端一般能接到第1,2,63,条,其他的都丢失

敬请教我,不盛感激1
...全文
210 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
buhuidelphi 2004-10-29
  • 打赏
  • 举报
回复
有没有人知道,delphi7 的 socketconnection 在 client端的时候,怎样捕捉由于 scksrv 的 inactive timeout 产生的错误?我想错误显示改为自己定义的提示?
halfdream 2004-10-29
  • 打赏
  • 举报
回复
完成端口主要是在多连接情况下减少线程切换,从而提高处理效率。。
在两个连接情况下反而不如其它SOCKET I/O方式。。。

当然,消息丢失感觉还是你程序问题。。IOCP那几种组合状态条件都需要处理好。。


S.F. 2004-10-29
  • 打赏
  • 举报
回复
gz
zwm09 2004-10-28
  • 打赏
  • 举报
回复
既然使用线程,干吗还使用轮询,为什么不使用事件机制。
DarkRiver 2004-10-28
  • 打赏
  • 举报
回复
我的程序也有这个问题,只是我好一点,只丢失三次,不管循环多少发送都是三次,很固定,不知道是什么原因
beyondtkl 2004-10-28
  • 打赏
  • 举报
回复
把你一些 创建,使用完成端口的重要代码贴出来

还有接收。。的代码
longtusoft 2004-10-28
  • 打赏
  • 举报
回复
wsstar 2004-10-28
  • 打赏
  • 举报
回复
Study
zhouhaijun2 2004-10-28
  • 打赏
  • 举报
回复
好象TCP-IP协议不支持多播,我使用过SOCKET API实现文件传输,在服务器空闲时每侦测到一个client的连接并与之连接,完成单位量数据的传输后就断开SOCKET,然后重新侦测下一个client,周而复始。与多个client同时传送文件测试通过!
millercq 2004-10-28
  • 打赏
  • 举报
回复
关注
up
potee 2004-10-28
  • 打赏
  • 举报
回复
贴点代码看看~
zhouhaijun2 2004-10-28
  • 打赏
  • 举报
回复
不好意思,没看到上面代码
zhouhaijun2 2004-10-28
  • 打赏
  • 举报
回复
用什么控件了,还是SOCKET API?
chenayuan 2004-10-28
  • 打赏
  • 举报
回复
下面是工作现成的代码(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;
chenayuan 2004-10-28
  • 打赏
  • 举报
回复
up

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧