能力值:
( LV2,RANK:10 )
|
-
-
2 楼
好好看看sendto函数,专门有个保存要发送数的大小参数len
function sendto(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr;
tolen: Integer): Integer; stdcall;
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
那接收那?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
一样
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
sockfd=socket(AF_INET,SOCK_DGRAM,0);
sockaddr_in stsin;
stsin.sin_family=AF_INET;
stsin.sin_port=htons(53);
stsin.sin_addr.s_addr=inet_addr("202.99.96.68");
a=sendto(sockfd,senddata,sizeof(senddata),0,(struct sockaddr *)&stsin,sizeof(stsin));
cc=100;
b=recvfrom(sockfd,buff,sizeof(buff),0,(struct sockaddr *)&stsin,&cc);
总是收到部分 返回信息,问题在哪里?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
就是那个b=啊,虽然接受的数据包不一定就是发送方的数据包,但是一般情况下还是很有参考价值的
|
能力值:
( LV12,RANK:330 )
|
-
-
7 楼
RECV的LEN参数是告诉WINSOCK你的缓冲区多大,而返回的参数是WINSOCK告诉你收到多少数据,完全不同的东西
如果RECV填满缓冲区还有剩余的数据,那么WINSOCK就会再次发送FD_READ(消息模式下),这样方便在消息循环里不断的读取数据
所以当然是return<=len
不知道recvfrom和recv是不是一样
|
|
|