winsocket 初始化已经成功!procedure TForm1.Button1Click(Sender: TObject);
var
Info:string;
BufSend,BufRecv:pchar;
skt:TSOCKET;
addr:TSockAddr;
Re:Integer;
begin
//2.建立socket
skt:=socket(AF_INET,SOCK_STREAM,0);
if(skt=INVALID_SOCKET)then
begin
memInfo.Lines.Add('Error:Create socket failed!');
exit;
end;
//3.连接主机
ZeroMemory(@addr,sizeof(addr));
addr.sin_family :=AF_INET;
addr.sin_addr.s_addr :=inet_addr(PChar(edtHOST.Text));
//Finger use #79 port
addr.sin_port:=htons(80);
Re := connect(skt,addr,sizeof(addr));
if(Re<>0)then
begin
memInfo.Lines.Add('Connect to server failed');
exit;
end;
//4.发送信息
GetMem(BufSend,1024);
ZeroMemory(BufSend,1024);
Info:='adodelphi'+#10;
StrPCopy(BufSend,Info);
Re:=send(skt,BufSend^,Length(BufSend),0);
if(Re=SOCKET_ERROR)then
begin
memInfo.Lines.Add('Send Data Failed');
exit;
end;
//5.读取主机返回信息
GetMem(BufRecv,1024);
repeat
ZeroMemory(bufRecv,1024);
re := recv(skt, BufRecv^, 1024, 0);
Info:=StrPas(bufRecv);
memInfo.Lines.Add(Info);
Until re=0;
memInfo.Lines.Add('Finish');
FreeMem(BufSend);
FreeMem(BufRecv);
//6.关闭socket
closesocket(skt);
end;
var
Info:string;
BufSend,BufRecv:pchar;
skt:TSOCKET;
addr:TSockAddr;
Re:Integer;
begin
//2.建立socket
skt:=socket(AF_INET,SOCK_STREAM,0);
if(skt=INVALID_SOCKET)then
begin
memInfo.Lines.Add('Error:Create socket failed!');
exit;
end;
//3.连接主机
ZeroMemory(@addr,sizeof(addr));
addr.sin_family :=AF_INET;
addr.sin_addr.s_addr :=inet_addr(PChar(edtHOST.Text));
//Finger use #79 port
addr.sin_port:=htons(80);
Re := connect(skt,addr,sizeof(addr));
if(Re<>0)then
begin
memInfo.Lines.Add('Connect to server failed');
exit;
end;
//4.发送信息
GetMem(BufSend,1024);
ZeroMemory(BufSend,1024);
Info:='adodelphi'+#10;
StrPCopy(BufSend,Info);
Re:=send(skt,BufSend^,Length(BufSend),0);
if(Re=SOCKET_ERROR)then
begin
memInfo.Lines.Add('Send Data Failed');
exit;
end;
//5.读取主机返回信息
GetMem(BufRecv,1024);
repeat
ZeroMemory(bufRecv,1024);
re := recv(skt, BufRecv^, 1024, 0);
Info:=StrPas(bufRecv);
memInfo.Lines.Add(Info);
Until re=0;
memInfo.Lines.Add('Finish');
FreeMem(BufSend);
FreeMem(BufRecv);
//6.关闭socket
closesocket(skt);
end;
不过现在可以继续探讨一下哪里有有关Delphi Winsocket编程的书籍可以下载?
我是刚学socket的
INADDR_ANY,怎么好像做很底层的socket似的?Delphi里面的控件已经不用这么
麻烦了吧?很容易用的TClientSocket和TServerSocket.看Delphi的help就可以
了呀,我觉得Delphi里面,看帮助就可以解决大多数的问题了,最多在加上看Demo,
再深一点就去看VCL的源码