1,593
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
begin
FSocket := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if FSocket = INVALID_SOCKET then
showmessage('ErrorCode'+inttostr(WSAGetLastError));
self.Button2.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
serverAddr: TSockAddrIn;
lastError: Integer;
begin
serverAddr.sin_family:= AF_INET;
serverAddr.sin_port:= htons(strtoint(self.Edit2.Text));//服务器端口
serverAddr.sin_addr.S_addr:= inet_addr(PAnsiChar(self.Edit1.Text));//服务器IP
WinSock2.connect(FSocket,@serverAddr,SizeOf(serverAddr));
lastError := WSAGetLastError();
if lastError <> 0 then
showmessage('connect:'+inttostr(lastError))
else
begin
FConnected:=true;
showmessage('连接成功');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
aWSAData: TWSAData;
begin
if WSAStartup($202, aWSAData) <> 0 then
ShowMessage('初始化WinSock2失败,请确认系统是否正确安装了WinSock2');
FSocket := INVALID_SOCKET;
FConnected:=false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
closesocket(FSocket);
WSACleanup;
end;
function TForm1.conn: Boolean;
var
SCI: sockaddr_in;
hostAddr: u_long;
begin
Result:= false;
try
if FConnected then
begin
Result:= True;
Exit;// 如果已经连接,则退出
end;
FSocket := socket(PF_INET,SOCK_STREAM,IPPROTO_IP); //创建socket
if (FSocket = INVALID_SOCKET) or (FSocket = SOCKET_ERROR) then
showmessage('ErrorCode:'+inttostr(WSAGetLastError));
sci.sin_family:= PF_INET;//定义协议簇
sci.sin_port:= htons(strtoint(self.Edit2.Text));
hostAddr:= inet_addr(PChar(self.Edit1.Text));
if hostAddr= -1 then
begin
closesocket(FSocket);
Exit;
end
else
sci.sin_addr.S_addr:= hostAddr;
if connect(FSocket,sci,SizeOf(sci))<>0 then
begin
showmessage('connect:'+inttostr(WSAGetLastError));
closesocket(FSocket);
Exit;
end;
except
closesocket(FSocket);
Exit;
end;
FConnected:= true;
showmessage('连接成功');
Result:= True;
end;