关于TCP的疑问 TCP协议是面向连接的流协议,也就是说数据没有边界。那可不可以一次性发送100K的数据。#define BUFFER_SIZE 1024000send (sock, pbuf, BUFFER_SIZE, 0); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用的是socket,socket是在TCP上进行封装的,socket的buffer具体也是有限制的,具体值忘记了。关键是你socket里的buffer 真正处理是在TCP中,会对其进行分包再发送,一般超过1K就会分包,具体处理就是TCP底层的事了,到底怎样的分其中很复杂,但TCP协议比一般人自己拆分好很多了。一般你的buffer越大问题越多吧,最好不要超过1k,其实你这样发送socket是很不合理的,send有返回值,应当判断是否发送完全完全,做个循环判断,在recv()时亦是如此。 这只是一个讨论题,我并没有在实际中这样去做。但考虑到TCP协议是流协议,发送方只管发,而不用考虑数据边界,而接收方尽管接收,也不用考虑数据边界。因此我就想,如果不考虑 send 阻塞的话, 让TCP 根据MTU自已决定分包的大小,然后发送给接收方。而接收方有可能是分很多次接收完这个数据。调用了很多次recv.然后再把数据组起来。我认为这样的效率会更高。但实际上我没有这样做过,只是一个想法。大家可以讨论。 TCP连接时,纯在一个MSS(最大报文段长度),表示TCP传往另外一段的最大块数据的长度,建立连接时,连接的双方需要通告各自的MSS。也就是说一边想发送多大,得看另外一端能接收多大。详见《TCP/IP详解》卷1。 看看TCP协议中的“发送窗口”大小 使用GetDIBits保存位图 恳请高人朋友看看消息框的问题 关于监视打印队列的问题(急) MDI程序,怎样遍历所有子窗口,怎样使某个子窗口显示到最前面?(当然是用程序实现) 如何在MFC中使用DirectSound的事件通告? 学完C++后该学什么 高分请教!!!!COM高手,asp高手。。。。。。。过来拿分! 在创建dll时,在函数前一定要加上WINAPI吗?WINAPI什么意思?谢谢! 锁键盘和鼠标。为什么在NT Service中不能正常运行??? webbrowser控件怎么提交百度贴子表单 网络编程除了socket之外还有什么方式? 加上MSComm后系统不能执行?
socket是在TCP上进行封装的,socket的buffer具体也是有限制的,具体值忘记了。关键是你socket里的buffer 真正处理是在TCP中,会对其进行分包再发送,一般超过1K就会分包,具体处理就是TCP底层的事了,到底怎样的分其中很复杂,但TCP协议比一般人自己拆分好很多了。一般你的buffer越大问题越多吧,最好不要超过1k,其实你这样发送socket是很不合理的,send有返回值,应当判断是否发送完全完全,做个循环判断,在recv()时亦是如此。