tcp 80和443埠探測程式碼
以前寫過, 最近要用, 來整合一下, 方便後續用:
試了一下, 靠譜。 不多說。#include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <malloc.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <stdarg.h> #include <fcntl.h> #include <time.h> #include <iostream> #include <fstream> using namespace std; int telnetCheckTcp(const char *ip, int port, int tSecond) { int sockClient = socket(AF_INET, SOCK_STREAM, 0); int iFinal = 0; struct sockaddr_in addrSrv; addrSrv.sin_addr.s_addr = inet_addr(ip); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(port); fcntl(sockClient, F_SETFL, fcntl(sockClient, F_GETFL, 0)|O_NONBLOCK); int iRet = connect(sockClient, ( const struct sockaddr *)&addrSrv, sizeof(struct sockaddr_in)); // 返回-1不一定是異常 if (iRet != 0) { if(errno != EINPROGRESS) { iFinal = -1; } else { struct timeval tm = {tSecond, 0}; fd_set wset, rset; FD_ZERO(&wset); FD_ZERO(&rset); FD_SET(sockClient, &wset); FD_SET(sockClient, &rset); int time1 = time(NULL); int n = select(sockClient + 1, &rset, &wset, NULL, &tm); int time2 = time(NULL); if(n < 0) { iFinal = -2; } else if(n == 0) { iFinal = -3; } else if (n == 1) { if(FD_ISSET(sockClient, &wset)) { iFinal = 0; fcntl(sockClient, F_SETFL, fcntl(sockClient, F_GETFL, 0) & ~O_NONBLOCK); } else { iFinal = -4; } } else { iFinal = -5; } } } close(sockClient); return iFinal; } int main(int argc, char *argv[]) // ./a.out ipfilename port1 port2 timeout dstfilename { if(argc != 6) { cout << "error" << endl; return -1; } ifstream in(argv[1]); string filename; string line; unsigned int i = 0; if(in) // 有該檔案 { while (getline (in, line)) // line中不包括每行的換行符 { // 這裡最好做ip格式判斷 i++; int iFinal = telnetCheckTcp(line.c_str(), atoi(argv[2]), atoi(argv[4])); if(iFinal == 0) { //printf("iFinal is %d, ip is %s, index is %d\n", iFinal, line.c_str(), i); } else { iFinal = telnetCheckTcp(line.c_str(), atoi(argv[3]), atoi(argv[4])); if(iFinal == 0) { //printf("iFinal is %d, ip is %s, index is %d\n", iFinal, line.c_str(), i); } else { //printf("iFinal is %d, cannot connect to %s, index is %d\n", iFinal, line.c_str(), i); char szCmd[128] = {0}; snprintf(szCmd, sizeof(szCmd), "echo %s >> %s", line.c_str(), argv[5]); system(szCmd); } } } } else // 沒有該檔案 { cout <<"no such file" << endl; } return 0; }
相關推薦
tcp 80和443埠探測程式碼
以前寫過, 最近要用, 來整合一下, 方便後續用: #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h
Ubuntu16.04下將Django框架部署到伺服器80和443埠
1.安裝Django框架pip install Django2.埠部署apache2網站部署檔案位於/etc/apache2/sites-available, 預設檔案為000-default.conf, 加了CA證書後的配置檔案為:000-default-le-ssl.co
netty同時繫結80和443埠
public static void main(String[] args) throws Exception { ContextProvider.onStart(); File keyFile = new File("/out/my.pk8"); //使用p
ubuntu tomcat啟用80和443埠
ubuntu預設不允許使用者使用1023及以下埠,需要如下操作(需已安裝authbind): 1. 修改/etc/default/tomcat7,改#AUTHBIND=no為AUTHBIND=yes 2. 執行一下指令: sudo touch /etc/authbind/b
阿里雲centos7伺服器關於80埠和443埠
昨天登入阿里雲平臺被告知我的伺服器被別人在美國等地使用git登入過,我懷疑是我的密碼洩露了,所以修改密碼後重啟伺服器,隨後寫的小程式發現不能用了(小程式要求https方式訪問),排查了老半天,發現443埠不通,隨後自己折騰了一下午,解決了,自己記錄一下。 開啟埠的步驟: 檢
nginx 80和443同時做負載均衡
ups art 均衡 負載均衡 follow service cert 同時 remote nginx 80和443同時做負載均衡: vi /etc/nginx/conf.d/default.conf upstream bugqa.ming.com {server 10.0
iptables 如何只開放80 和 22埠
# Generated by iptables-save v1.4.7 on Tue Aug 18 11:44:46 2015 *filter :INPUT ACCEPT [17053:17940802] :FORWARD ACCEPT [0:0] :OUTPUT ACCE
macOS - TS1629 Apple 使用的 TCP 和 UDP 埠
TS1629 地址:http://support.apple.com/kb/TS1629 後被重定向到: https://support.apple.com/zh-cn/HT202944 2018年8月30日 轉自上述連線 Apple 軟體產品所使用的 TCP 和 UDP
檢查 TCP 80 埠是否正常工作
如果你的例項無法對外提供 HTTP 服務,你可以按以下步驟檢查 Web 服務相關的介面(預設為 TCP 80)是否正常工作: 1、在 ECS 管理控制檯,確認安全組已經放行該埠。 2、遠端連線 ECS 例項,確認服務已經開啟。 3、確認埠正常被監聽。如沒有,請修改監聽地址。 4、確認
phpstudy執行時80埠和3306埠被佔用解決方法
80埠負責Apache執行 3306埠負責MySQL執行 當這兩個埠被佔用時,則不能執行程式 首先檢視什麼程式佔用埠,按住window+R,輸入cmd,點確定 進入cmd的介面,在輸入“netstat -ano” 再按回車鍵 找到埠以及對應的PID值 然後
使用虛擬串列埠軟體和串列埠除錯助手來測試串列埠通訊程式碼
轉載自:http://blog.csdn.net/u013232740/article/details/49838233 為解決計算機的物理串列埠個數的限制,在進行串列埠除錯實驗時,應儘可能採用虛擬串列埠軟體。VSPD(Virtual Serial Ports Driv
nginx配置ssl協議https +tomcat 非80/443埠反向代理的配置方式
--開始 Nginx增加以下配置 proxy_set_header Host $host:$server_port; 非80埠 ,用80埠時 不需要$server_port proxy_set_header X-Real-IP $remote_addr; proxy_se
Centos 7防火牆iptables開放指定埠(80)和設定ftp的方法
開啟80埠 複製程式碼 1firewall-cmd --zone=public --add-port=80/tcp --permanent出現success表明新增成功命令含義:--zone #作用域--add-port=80/tcp #新增埠,格式為:埠/通訊協議-
C#.net同步非同步SOCKET通訊和多執行緒總結(5)tcp傳送和接受的程式碼
基於TCP協議的傳送和接收端 TCP協議的接收端 using System.Net.Sockets ; //使用到TcpListen類 using System.Threading ; //使用到執行緒 using System.IO ; //使用到StreamReader類 int port = 800
伺服器埠號80和8080更改
伺服器一般預設為8080,但有的時候卻需要使用80埠比如微信小程式開發,指定只能有80埠找到tomcat裡面的server.xml檔案右擊編輯找到箭頭所指項,直接更改為80 然後儲存即可執行tomcat 此時埠號已經被更改相同的80更改為8080埠也是同樣的步驟
對於jetty eclipse 老是呼叫不到最新的程式碼 和修改 埠配置
對於jetty eclipse 老是呼叫不到最新的程式碼 ,必須要把解析工作空間的前面的勾打上。 配置jeety:run的時候記得要將下面的打上勾,否則呼叫不到最新的程式碼。(jetty:run -Djetty.port=9090 ) 修改埠 Resolve Wo
【基本網路概念之三】IP、TCP和UDP IP地址和域名 埠
IP、TCP和UDP java支援的協議只有TCP和UDP,以及建立在TCP和UDP之上的應用層協議。所有其他傳輸層、網際層和更底層的協議,如ICMP、IGMP、ARP和其他協議在java程式中都只能通過連結到原生程式碼來實現。 IP地址和域名 I
nginx 監聽多個埠 80和81
首先找到nginx的配置檔案nginx.conf,開啟配置檔案後找到類似下面一段: [[email protected] nginx]# cd /etc/nginx/conf.d/然後把目錄下面的檔案都列出來:[[email protected] con
tomcat設定https埠時,8443和443的區別
1. 8443埠在訪問時需要加埠號,相當於http的8080,不可通過域名直接訪問,需要加上埠號;https://xiangye.com:8443。 2. 443埠在訪問時不需要加埠號,相當於htt
skype默認占用80和443port
sta netstat 使用 class 發現 -a pid 禁止 穿透 今天把server的port更改為80,結果起不來,報告“port已經被占用”的錯誤。 使用下列命令找到了元兇: 1. netstat -ano | findstr 80 找到占用80po