如何检测本机UDP服务端口是否被占用?

haicn123 2003-01-20 07:40:52
如何检测本机UDP服务端口是否被占用?
...全文
621 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny518 2003-01-20
  • 打赏
  • 举报
回复
gz 学习
Billy_Chen28 2003-01-20
  • 打赏
  • 举报
回复
判断某个UDP端口是否已被其他程序占用,
program TestPort;

uses
WinSock,windows;

var
s : TSocket;
wsd : TWSAData;
SockAddrIn : TSockAddrIn;
begin
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(2222));
if (Bind(s,SockAddrIn,SizeOf(SockAddrIn))<>0) then
if (GetLastError = WSAEADDRINUSE) then
MessageBox(0,'Port 2222 Be Uses','Sorry',MB_OK);
end;
finally
CloseSocket(s);
WSACleanup();
end;
end;

huangrenguang 2003-01-20
  • 打赏
  • 举报
回复
procedure TCommForm.Button1Click(Sender: TObject);
var
CommTimeOut : TCOMMTIMEOUTS;
DCB : TDCB;
fRetVal : Boolean;
begin
StatusBar1.SimpleText := '连接中...';
CommHandle := CreateFile(PChar(ComboBox1.Text),GENERIC_READ,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
, 0);
if CommHandle = INVALID_HANDLE_VALUE then begin
StatusBar1.SimpleText := '连接失败';
Exit;
end;
StatusBar1.SimpleText := '已同端口 '+ ComboBox1.Text + ' 连接!';
CommTimeOut.ReadIntervalTimeout := MAXDWORD;
CommTimeOut.ReadTotalTimeoutMultiplier := 0;
CommTimeOut.ReadTotalTimeoutConstant := 0;
SetCommTimeouts(CommHandle, CommTimeOut);
GetCommState(CommHandle,DCB);
DCB.BaudRate := 9600;
DCB.ByteSize := 8;
DCB.Parity := NOPARITY;
DCB.StopBits := ONESTOPBIT;
fRetVal := SetCommState(CommHandle, DCB);
if (fRetVal) then begin
Connected := TRUE;
try
CommThread := TCommThread.Create;
except
Connected := FALSE;
CloseHandle(CommHandle);
fRetVal := FALSE;
StatusBar1.SimpleText := '线程建立失败';
Exit;
end;
end
else begin
Connected := FALSE;
CloseHandle(CommHandle);
end;
end;
haicn123 2003-01-20
  • 打赏
  • 举报
回复
楼上能注释一下你的代码吗?有点晕~~~~~~~~~~
huangrenguang 2003-01-20
  • 打赏
  • 举报
回复
int CheckState(port)
int port;
{
union REGS reg;
reg.x.dx=port;
reg.h.ah=3;
int86(0x14,®,®);
return reg.x.ax;
}

laisxy 2003-01-20
  • 打赏
  • 举报
回复
我有一个程序(下载的,有原码),对你有帮助,如果想要:
sunlai2000@21cn.com
yczyk 2003-01-20
  • 打赏
  • 举报
回复
不会,先占个位子来学习一下啦!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧