socket BIND失败的原因?
在写一个SOCKET原型的时候遇到这个问题。BIND失败。
function TListenThread.InitSocket: BOOL;
var
addr: TSockAddr;
i:integer;
begin
result := False;
FListenSock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if FListenSock = INVALID_SOCKET then
begin
MessageBox(0, 'Call socket() failed.', 'Error', MB_ICONERROR);
Exit;
end;
addr.sin_family := AF_INET;
addr.sin_port := htons(LISTEN_PORT);
addr.sin_addr.S_addr := htonl(INADDR_ANY);
if bind(FListenSock, @addr, sizeof(SOCKADDR)) = SOCKET_ERROR then ///绑定失败??????????
begin
i:=GetLastError;
MessageBox(0, 'Call bind failed.', 'Error', MB_ICONERROR);
Exit;
end;
if listen(FListenSock, 5) = SOCKET_ERROR then
begin
MessageBox(0, 'Call listen failed.', 'Error', MB_ICONERROR);
Exit;
end;
result := True;
end;