读书人

甩分WINSOCK小疑点

发布时间: 2012-12-19 14:13:15 作者: rapoo

甩分,WINSOCK小问题。
我用API 做了个UDP通信的程序。发得出,收得到用线程收的。
发送几个字节,接收的长度也一样。但就是数据不对。不知道为什么。

比如我发了8个BYTE 1,2,3,4,5,6,7,8

收的数组大小为一千,收到数据后显示长度为8。

那么我在这一千的数组里取前8位根本和原来的都不一样。为知道为什么。
[解决办法]
举例说明白,发的什么,怎么发的,怎么收的
[解决办法]
这是发。
SetLength(msg,8);
msg:=strtobyte('12345678');
sendto(moSocket,msg,Length(msg),0,addr,SizeOf(addr));

这是收
UDPLEN:=SizeOf(addr);
intReceiveUDPSize:=recvfrom(moSocket,
arayReceiveUDPBuf,
max_rec,0,
addr,UDPLEN);
if intReceiveUDPSize<=0 then Exit;
出了数据内容不正确。其它的都正确。
[解决办法]
我比较关心socket创建时的代码是什么样的,是否指定了标准的大尾模式AF_INET,程序处理时是否严格按照大尾方式进行内存组织
[解决办法]
AF_INET 真是高手,对的。

i:= WSAStartup($101,wd);
port:=1234;
if(i<>0)then exit;
addr.sin_family:=AF_INET;
addr.sin_port:=ntohs(port);
addr.sin_addr.S_addr:=inet_addr('127.0.0.1');
moSocket:=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
i:=bind(moSocket,addr,SizeOf(addr));

读书人网 >.NET

热点推荐