根據ip建立socket
#include #include #include #include #include #include #include #include #define logd printf
#define logi printf
#define loge printf
int just_sock_connect_ip(const char* ip, int port)
; if (ip == null) return -einval;
logi("just_sock_connect_ip(%s:%d)", ip, port);
sockfd = socket(af_inet,sock_stream,0);
if(sockfd == -1)
//設定sock快速收發,防止粘包
setsockopt(sockfd, ipproto_tcp, tcp_nodelay,&on,sizeof(on));
setsockopt(sockfd, sol_socket, so_sndtimeo,&timev,sizeof(timev));
//設定非阻塞
//flags = fcntl(sockfd, f_getfl, 0);
//fcntl(sockfd, f_setfl, flags | o_nonblock);
logi("socket create success, fd =%d", sockfd);
memset((void*)&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = inet_addr(ip);
reval = connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
if (reval == 0) return sockfd;
switch(errno)
if (reval < 0)
logi("connect [%s:%d] success!", ip, port);
return sockfd;
}
當connect返回負值但errno=einprogress/ealready時表示「正在處理中」,可用select機制來監控可寫性,socket一旦可寫就說明連線成功了:
static int socket_wait_writable(int sockfd, int timeout_ms)
long time_seft = timeout_ms - time_used;
timeout_v.tv_sec = time_seft/1000;
timeout_v.tv_usec = time_seft%1000 * 1000;
fd_zero(&wset);
fd_zero(&eset);
fd_set(sockfd, &wset);
fd_set(sockfd, &eset);
reval = select(sockfd + 1, null, &wset, &eset , &timeout_v);
if(reval == -1 && errno != eintr)
else if( reval == 0)
else if(reval > 0 && fd_isset(sockfd, &eset))
else if ( reval > 0 && fd_isset(sockfd, &wset))
else
}return 0;
}
【測試用例】
void just_sock_connect_test(void)
loge("just_sock_connect_ip success");
}
根據IP獲取省市
public class ipaddress 2 0 4 d 25 0 5 01 d d?ip正則 string ip string.empty ip位址 string country string.empty 國家 string adr string.empty 省市 string html ge...
根據網域名稱取出ip
本地網域名稱伺服器採用迭代查詢 假定網域名稱為m.xyz.com的主機想知道另一台主機 網域名稱為y.abc.com 的ip位址。如,主機m.xyz.com打算傳送郵件給主機y.abc.com。這時就必須知道主機y.abc.com的ip位址。下面是圖6 5的幾個查詢步驟 1 主機m.xyz.com先...
Linux建立虛擬ip的方法
1 虛擬ip的介紹 虛擬ip位址 vip 是乙個不與特定計算機或乙個計算機中的網路介面卡 nic 相連的ip位址。資料報被傳送到這個vip位址,但是所有的資料還是經過真實的網路介面。就是一塊網絡卡上邊有兩個ip,然後無論到哪個ip的流量都會經過物理網絡卡。2 虛擬ip的作用 大部分虛擬ip基本上都用...