TClientSocket的SendText问题?

wangpeng1102 2005-07-19 12:14:37
我的程序是基于C/S的。思路如下:

1.客户机每隔100ms向服务器发送不等长的数据包(很短,在10-20个字节不等)。
例如:第一个100ms发送:02A0D203(ASCII码),第二个100ms发送 03A0D203,然后每隔100ms发送一次,不停的发,利用sendText()发送。

2.服务器响应OnRead()事件,然后利用ReceiveText接收。

3.采用异步方式。

出现问题:
服务器端接收数据时,有时接到02A0D203,但有时是接受02A0D20303A0D203,也就是说客户机发送的第一个100ms和第二个100ms的数据被一块接收了。这样将导致我的处理出现问题。
但是当我把客户机发送时间间隔改成200ms,将不会出现上述问题。但我的程序必须需要100ms

VC中可以通过setsockopt(SOCKET,IPPROTO_TCP1,TCP_NODELAY,&TRUE,sizeof(BOOL))设置立即发送,TClientSocket中是否有这样的设置?

请问应该如何处理,非常感谢!
...全文
338 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
devil_angel 2005-07-20
  • 打赏
  • 举报
回复
关注。。。。学习。。。
cjf1009 2005-07-20
  • 打赏
  • 举报
回复
关注
僵哥 2005-07-19
  • 打赏
  • 举报
回复
uses
winsock;

setsockopt(TClientSocket.Socket.SocketHandle,IPPROTO_TCP1,TCP_NODELAY,#1,1);

具体的自己修改一下后面的两个参数。
wangpeng1102 2005-07-19
  • 打赏
  • 举报
回复
setsockopt()? 可是Delphi中根本不能用这个API函数的阿。望给与帮助
bxh2dai 2005-07-19
  • 打赏
  • 举报
回复
关注
僵哥 2005-07-19
  • 打赏
  • 举报
回复
setsockopt(TClientSocket->Socket->SocketHandle,IPPROTO_TCP1,TCP_NODELAY,&TRUE,sizeof(BOOL))

1,593

社区成员

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

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