- Socket error #0 –
Direct send error.
直接傳送錯誤。 - Socket error #10004 [WSAEINTR] –
Interrupted function call.
函式呼叫被中止。 - Socket error #10013 [WSAEACCES] –
Permission denied.
沒有權限。 - Socket error #10014 [WSAEFAULT] –
Bad Address.
不正確的地址。 - Socket error #10022 [WSAEINVAL] –
Invalid argument.
無效的引數(參數)。
2014年10月6日 星期一
Socket Error 錯誤號碼及原因
在Coding 網路連線資料傳輸時,免不了會遇到的錯誤代碼,記錄如下備查
2014年1月15日 星期三
[Delphi] 利用Winsock 檢查要使用的Port 是否已被佔用
注意,如果使用Winsock2 無法正常檢查!!
此程式會檢查給的port 是否已經被使用,如果是就+1,直到找到空著(沒有被使用)的埠為止。
如果有需要指定範圍,可在 18, 19行間增加如下:
此程式會檢查給的port 是否已經被使用,如果是就+1,直到找到空著(沒有被使用)的埠為止。
function TNetServer.GetFreePort(aPort: Integer): Integer;
var
_vSock: TSocket;
_vWSAData: TWSAData;
_vAddrIn: TSockAddrIn;
begin
try
if WSAStartup(MAKEWORD(2, 2), _vWSAData) = 0 then begin
_vSock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
try
if _vSock <> SOCKET_ERROR then begin
_vAddrIn.sin_family := AF_INET;
_vAddrIn.sin_addr.S_addr := htonl(INADDR_ANY);
_vAddrIn.sin_port := htons(APort);
while (Bind(_vSock, _vAddrIn, SizeOf(_vAddrIn)) <> 0) and (WSAGetLastError = WSAEADDRINUSE) do
begin
inc(aPort);
_vAddrIn.sin_port := htons(aPort);
end;
end;
finally
CloseSocket(_vSock);
WSACleanup();
end;
end;
finally
Result := aPort;
end;
end;
如果有需要指定範圍,可在 18, 19行間增加如下:
if aPort > XXXXX then aPort := OOOOO;
XXXXX 是最大的埠號值
OOOOO 是最小的埠號值
OOOOO 是最小的埠號值
訂閱:
文章 (Atom)