怎样实现一个send就让TCP或UDP发送一个包(在线等待) TCP或UDP会把不太长的包粘起来或把太长的包截断,现在我并不想这种情况发生,我想一次send就让socket发一个包,如何做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简要回答一下:1 TCP是流式的,所以发送者send(...)一个包时, 接受端可能分成几个包接受; 也有可能发送者send(...)多个包时, 接受端合成为一个包接受. 主要根据 网络上流量状况2 socket有两种操作方式, 一种是阻塞的,另一种是非阻塞. 假如是阻塞方式,应该这样接受 int ret = 0; while(1) { ret = recv(...); if(ret<=0) { close(...); break; } } 当ret=0时, 表示对方close(..) ,当ret<0时表示socket错误留下mail, 我发一个例程给你. 说的不一定对,在以太网里面,IP的数据包的大小是有限制的,不可能特别的大。如果太大,就要被分片,也就是IP分片。而且,如果数据经过路由器,IP数据包可能还会被分片。所以,我认为,你发送一些比较小的数据也可能会被分片,如果是较大的数据,那就是肯定的了。 tcp本来就是流式的, 哪来分片这个概念.至于ip包, 是会重新拆包与打包的.但这与上层无关.所以只要你在应用层定义包的格式, 接受与发送时协调一致即可.check your in-box of email sorry,email is [email protected] clistctrl如果使这个列表控件可以编辑内容呢 关于结构体和map间的冲突?? 打开图片和关闭图片的问题 请高手 给我看看 我是初学者 CView类的问题 如何改变对话框的背景颜色? 为什么CSocket不能在线程之间传递?还有哪些MFC类不能在线程之间传递? ================高手请接招==================== csdn 有多少江湖宵小是 大学被开除 或 退学的 VC++中如何为ATL做的组件添加接口,具体步骤!!! 急!!请问如何调用atl组建,在线等待(通过,在加分) 一个ListView的问题,我都快被折磨死了,我也一定给分
1 TCP是流式的,所以发送者send(...)一个包时, 接受端可能分成几个包接受;
也有可能发送者send(...)多个包时, 接受端合成为一个包接受. 主要根据
网络上流量状况
2 socket有两种操作方式, 一种是阻塞的,另一种是非阻塞.
假如是阻塞方式,应该这样接受
int ret = 0;
while(1)
{
ret = recv(...);
if(ret<=0)
{
close(...);
break;
}
}
当ret=0时, 表示对方close(..) ,当ret<0时表示socket错误留下mail, 我发一个例程给你.