★★★★★★★★100分!★★ 怎么知道某个TCP端口是否被占用? ★★★★★★
防止本地服务端口冲突,怎么知道某个TCP端口是否被占用?
Function TestPort(ProtNo:Integer):Boolean;
var
s : TSocket;
wsd : TWSAData;
SockAddrIn : TSockAddrIn;
begin
Result:=false;
if (WSAStartup(MAKEWORD(2,2),wsd) = 0) then
begin
s := Socket(AF_INET,SOCK_DGRAM,0);
try
if (s <> SOCKET_ERROR) then
begin
SockAddrIn.sin_family := AF_INET;
SockAddrIn.sin_addr.S_addr := htonl(INADDR_ANY);
SockAddrIn.sin_port := htons(Short(ProtNo));
if (Bind(s,SockAddrIn,SizeOf(SockAddrIn))<>0) then
if (GetLastError = WSAEADDRINUSE) then
Result:=true;
end;
finally
CloseSocket(s);
WSACleanup();
end;
end;
end;
上面的代码是在csdn里面找的。改了改,好像不对!各位指点。
问题点数:100、回复次数:3Top
1 楼Cipherliu(孤鹰)回复于 2003-12-01 16:50:59 得分 0
如果某个端口已经被占用,你再试图打开时,就会产生一个异常Top
2 楼sh_work(乖宝宝)回复于 2003-12-01 16:55:08 得分 0
拜托,不用这样的方法行吗?Top
3 楼xjaspen(我要挣钱)回复于 2003-12-04 22:29:34 得分 100
我知道!Top




