[高级问题2]请问大家一个网络编程的方法问题?

佣工7001 2004-12-14 05:26:44
我的程序中采用TServerSocket和TClientSocket编程,NonBlocking方式。
问题是在某个时间我的Client程序需要向服务器连续发出两个命令,但是服务器端在一个包里面收到了!请问作过类似程序的大虾,如果不采用自己封包的格式,怎末能保证连续发出的包,对方分两次收到呢?
...全文
168 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
佣工7001 2004-12-14
  • 打赏
  • 举报
回复
回 netsys2(来电!) ,这下有决心了,看来这能这样做了,多谢指点。
netsys2 2004-12-14
  • 打赏
  • 举报
回复
SOCKET编程中,你发的数据都是看成“数据流”的方式,

不管你是怎么发送,例如这次发10个,下次20,从接收者来看都是10+20+。。。。

因此为了区分每个包,你:


必须自定义应用层协议,通过包头自己来区分两个包!

这是全球SOCKET编程人员的标准用法!


我有个非标准做法:

每发一个包,SLEEP若干毫秒,对方就可以分开收了。

但这太影响效率了!

不推荐使用!


随便说一句,

为了提高传输效率,TCP层专门有个Nagle算法,用于将小包组成大包再发送。


因此不要再乱想了,

记住:SOCKET的数据是数据流,有头无尾,你要判断尾巴,就得自己设计!
Maconel 2004-12-14
  • 打赏
  • 举报
回复
呵呵,没做过,只是提供一个思路。
Maconel 2004-12-14
  • 打赏
  • 举报
回复
client发完一个包后,等待server的确认信息,然后发下一个包

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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