在delphi编程时,如何检测1个端口是否被占用,不准用控件能实现么?最好别用控件!
答案:2 悬赏:40 手机版
解决时间 2021-01-28 03:40
- 提问者网友:风月客
- 2021-01-27 16:13
在delphi编程时,如何检测1个端口是否被占用,不准用控件能实现么?最好别用控件!
最佳答案
- 五星知识达人网友:七十二街
- 2021-01-27 17:46
如何检测本机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;
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;
全部回答
- 1楼网友:纵马山川剑自提
- 2021-01-27 18:04
提示是表示有非法字符!!
你的代码是从网上复制粘贴的吧,把你代码前面的所有空格去掉:
procedure tform1.button2click(sender: tobject);
begin
mscomm1.portopen := false; //前面的空格去掉
。。。。。。。。。。。。。//前面的空格去掉
end;
//mscomm1comm过程代码的空格也去掉
然后运行看看是否报错,找到报错行,把前面空格去掉
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯