udp编程中,server端老是接受不到数据?帮忙看一下.[菜鸟问题]
程序如下:
client端:
var
wsaData:TWSAData;
sock:Tsocket;
client,server:TsockAddr;
re:integer;
Pbuf:pchar;
sbuf:string;
i:integer;
beg in
if (WSAStartup(2,wsadata)<>0) then
writeln('wsastartup error');
sock:=socket(AF_INET,SOCK_DGRAM,0);
if (sock=INVALID_SOCKET) then
writeln('sock error');
writeln('kaka');
pbuf:='this is a test';
server.sin_family:=AF_INET;
server.sin_port :=htons(6666);
server.sin_addr.S_addr:=inet_addr(pchar('202.200.xxx.88'));
for i:= 1 to 20 do
begin
sendto(sock,pbuf^,length(pbuf),0,server,sizeof(server));
writeln('send');
sleep(1000);
end;
closesocket(sock);
wsacleanup();
end.
=============================================================
server端:
var
wsaData:TWSAData;
sock:Tsocket;
client,server:TsockAddr;
re:integer;
Pbuf:pchar;
sbuf:string;
rval:integer;
len:integer;
i:integer;
begin
if (WSAStartup(2,wsadata)<>0) then
writeln('wsastartup error');
sock:=socket(AF_INET,SOCK_DGRAM,0);
if (sock=INVALID_SOCKET) then
writeln('sock error');
server.sin_family:=AF_INET;
server.sin_port:=htons(6666);
server.sin_addr.S_addr:=inet_addr('202.200.xxx.88');
re:=bind(sock,server,sizeof(server));
if (re<>0) then
writeln('bind error');
getmem(pbuf,100);
// zeromemory(pbuf,100);
writeln('here');
while(true) do //sock,pbuf^,length(pbuf),0,server,sizeof(server)
begin
rval:=recvfrom(sock,pbuf^,length(pbuf),0,client,len);
if rval>0 then
sbuf:=strpas(pbuf);
end;
wsacleanup();
end.
这个问题已经让我苦恼了很久了.
那位大虾能帮我看一下,谢谢先.