我刚学的delphi。关于SOcket函数找不到专门delphi的教材,现在看的书上例子都是C的代码,所以很多例子都实验不出来有些函数不容易理解。哪位能提供一个完整的服务器和客户端程序的代码,感激不尽了。
以下是我把C语言例子大概翻译成Delphi的服务器代码,不太理解的是:1.如何在 while 1>0 的无限循环时跳出来?2、客户端程序调用connect函数时的IP地址如何设置?var
s,newsock:TSocket;
ser_addr:TSockAddrIn;
remote_addr:PSockAddr;
leng:Integer;
wsa:WSAData;
wVersionRequested:WORD;
buf:array[0..128]of char;
buf2:array[0..128]of char;
begin
//new(leng);
wVersionRequested := MAKEWORD( 2, 0 );
WSAStartup(wVersionRequested,wsa);
s := socket(AF_INET,SOCK_STREAM,0);
ser_addr.sin_family := AF_INET;
ser_addr.sin_addr.S_addr := htonl(INADDR_ANY);
ser_addr.sin_port := htons(4000);
bind(s,ser_addr,sizeof(ser_addr));
listen(s,0);
while 1>0 do
leng:= sizeof(remote_addr);
newsock := accept(s,remote_addr,@leng);
begin
if recv(newsock,buf,sizeof(buf),0)>0 then
begin
writeln('Client Data:',buf);
Readln(buf2);
send(newsock,buf2,sizeof(buf2),0);
end;
closesocket(newsock);
end;
closesocket(s);
WSACleanup();
sleep(2000);
end.
以下是我把C语言例子大概翻译成Delphi的服务器代码,不太理解的是:1.如何在 while 1>0 的无限循环时跳出来?2、客户端程序调用connect函数时的IP地址如何设置?var
s,newsock:TSocket;
ser_addr:TSockAddrIn;
remote_addr:PSockAddr;
leng:Integer;
wsa:WSAData;
wVersionRequested:WORD;
buf:array[0..128]of char;
buf2:array[0..128]of char;
begin
//new(leng);
wVersionRequested := MAKEWORD( 2, 0 );
WSAStartup(wVersionRequested,wsa);
s := socket(AF_INET,SOCK_STREAM,0);
ser_addr.sin_family := AF_INET;
ser_addr.sin_addr.S_addr := htonl(INADDR_ANY);
ser_addr.sin_port := htons(4000);
bind(s,ser_addr,sizeof(ser_addr));
listen(s,0);
while 1>0 do
leng:= sizeof(remote_addr);
newsock := accept(s,remote_addr,@leng);
begin
if recv(newsock,buf,sizeof(buf),0)>0 then
begin
writeln('Client Data:',buf);
Readln(buf2);
send(newsock,buf2,sizeof(buf2),0);
end;
closesocket(newsock);
end;
closesocket(s);
WSACleanup();
sleep(2000);
end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货