数据包接收和发送问题
在使用tcp连接发送数据包时,我连续调用send,发送不同的数据,可是在接收的时候,如果两次发送的数据包不是很大,则接收时,将一起接收,即一次recv动作将把两次send的数据全都接收进来,也可能是两次的数据被一次send出去,请问如何才能使得,每一次recv就接收一次send的数据,无论数据包有多小?谢谢!
问题点数:20、回复次数:8Top
1 楼newshute(小武)回复于 2005-01-14 00:06:15 得分 0
传送时指定传输的数据大小,接收时不管接收到多少都只取你要求的大小。或者看一下异步传输...Top
2 楼99263()回复于 2005-01-14 00:13:20 得分 4
设两个缓冲区,一个为数据缓冲区,一个为临时缓冲区,接收数据时,将接收到的数据保存到临时缓冲区中,然后拷贝到数据缓冲区中,然后分析数据缓冲区中的内容,不过你得定义数据包头和包尾,有时可能还剩半个包,就先放在数据缓冲区中,下次会再收到另一个半包的数据。Top
3 楼aspvbjava(注定走入地狱)回复于 2005-01-14 00:31:32 得分 4
tcp没有包边界的概念,数据是一个字节一个字节发送的,只能你自己分析收到的数据
可以发送一个结构,传送数据包的长度
struct datastruct{
char *flag;
int len;
}
或者采用udpTop
4 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-01-14 09:52:21 得分 10
粘包问题。解决方法之一:甚至socket为不缓存直接发送!
二:发送和接受头里面有长度的校验Top
5 楼fisker0303(天塌了,地陷了,小花狗不见了.)回复于 2005-01-14 12:50:49 得分 2
严重同意楼上的。
是的,粘包问题。
可以去网上搜一下。Top
6 楼yphuan(ahuan)回复于 2005-01-14 15:24:57 得分 0
谢谢楼上的几位,我找到了那个帖子http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=146252
大致有思路了,谢谢!!Top
7 楼HHunter()回复于 2005-01-14 15:26:57 得分 0
同意 newshute(小武) 的说法Top
8 楼yphuan(ahuan)回复于 2005-01-14 15:57:49 得分 0
http://www.vckbase.com/document/viewdoc/?id=1203,这个是带图的。Top
相关问题
- 怎样用api来实现udp数据包的接收和发送??
- 如何用socket发送和接收自定义数据包?求源代码
- 如何用socket发送和接收自定义数据包?求源代码
- 用UDP发送接收数据包需要几个端口?
- ASP中的数据包发送的与接收的问题!一定加分!
- 请教各位:怎样才能通过程序实现监听某个端口(80端口)发送和接收的数据包:
- 请教C#网络编程高手,如何在C#.net环境中用Socket发送和接收一个Struct类型的数据包!!
- CSocket::Receive()和ReceiveFrom()函数可能接收到同一数据包吗?
- 百分请教,jsp怎么接收soap数据包,以及发送soap数据包,我要郁闷死了!!!帮我!
- 如何用asp接收XML数据包?




