本文整理自网络,侵删。
function PortOccupied(const APort:Integer):Boolean; //Delphi中判断TCP端口是否被占用
var
S:TSocket;
WSD :TWSAData;
SockAddrIn:TSockAddrIn;
begin
Result:=False;
if (WSAStartup(MAKEWORD(2,2),WSD)= 0) then
begin
S := Socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
try
if (S <> SOCKET_ERROR) then
begin
SockAddrIn.sin_family := AF_INET;
SockAddrIn.sin_addr.S_addr := htonl(INADDR_ANY);
//SockAddrIn.sin_addr.S_addr := inet_addr(PAnsiChar(AnsiString(IP)));
SockAddrIn.sin_port:= htons(APort);
if (Bind(S,SockAddrIn,SizeOf(SockAddrIn))<>0) then
if (WSAGetLastError = WSAEADDRINUSE) then
Result:=True;
end;
finally
CloseSocket(S);
WSACleanup();
end;
end;
end;
相关阅读 >>
Delphi 将自己的app.ico应用程序图表添加到dephi资源文件res中
Delphi tnethttpclient https忽略证书验证
Delphi winapi: settimer、killtimer - 创建与移除高性能定时器
更多相关阅读请进入《Delphi》频道 >>