首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

甩分,WINSOCK小疑点

2012-12-19 
甩分,WINSOCK小问题。我用API 做了个UDP通信的程序。发得出,收得到用线程收的。发送几个字节,接收的长度也一

甩分,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));

热点排行