如何測試 IP 中的 PORT 是否開啟 ?? |
尚未結案
|
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Try to connect
< class="code">
procedure TForm1.Button1Click(Sender: TObject);
begin
with TcpClient1 do begin
Close;
RemoteHost := '192.168.1.100';
RemotePort := '80';
Open;
end;
end; procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
ShowMessage('port 80 opened');
end; procedure TForm1.TcpClient1Error(Sender: TObject; SocketError: Integer);
begin
ShowMessage('port 80 closed');
end;
|
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
參考: http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&th=cb4278d62e690521&rnum=4
小弟修改如下:
uses Winsock; procedure TForm1.Button1Click(Sender: TObject); procedure PortScan(AIP: string; APort: integer); var data: TWSAData; sock: TSocket; addr: TSockAddrIn; iaddr: TInAddr; begin try if (WSAStartup($0101, data) = 0) then begin sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock <> INVALID_SOCKET) then begin // zero out the addr struct. FillChar(addr, SizeOf(TSockAddrIn), 0); FillChar(iaddr, SizeOf(TInAddr), 0); //fill in the internet address iaddr.S_addr := inet_addr(PChar(AIP)); //fill in the rest of the address. addr.sin_family := PF_INET; addr.sin_port := htons(APort); addr.sin_addr := iaddr; // try to connect, if it failes then the port is closed if (connect(sock, addr, SizeOf(TSockAddrIn)) = 0) then begin ShowMessage('Port ' + IntToStr(APort) + ' IS open on ' + AIP); end else begin ShowMessage('Port NOT open ' + IntToStr(APort) + ' on ' + AIP); end; end else begin ShowMessage('There was an error creating the socket.'); end; end else begin ShowMessage('Failed to initialize winsock.'); end; finally WSACleanup(); end; end; begin Button1.Enabled := False; PortScan('192.168.1.34', 80); Button1.Enabled := True; end;--- 每個人都是一本書 |
vernon
一般會員 發表:27 回覆:26 積分:10 註冊:2003-05-28 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |