#include "stdafx.h"
#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(lib,"ws2_32.lib")
# define buffer_size 10240 //緩衝區大小
int main()
/*if (lobyte(wsadata.wversion) != 1 || hibyte(wsadata.wversion) != 1) */
//初始化
//sock_client = socket(af_inet, sock_dgram, ipproto_udp);//建立客戶端用於通訊的socket
sockaddr_in addr_server; //伺服器的位址資料結構
addr_server.sin_family = af_inet;
addr_server.sin_port = htons(15533);//埠號
addr_server.sin_addr.s_un.s_addr = inet_addr("192.168.0.2"); 為本電腦ip位址
//addr_server.sin_addr.s_un.s_addr = htonl(inaddr_any);
sock_client = socket(af_inet, sock_dgram, 0);
;if (sock_client == invalid_socket)
int ilen = sizeof(addr_server);
sockaddr fromaddr;
int addrlen = sizeof(fromaddr);
while (1)
else if (last == 0)
else
//recebuf[buffer_size] = ;
memset(recebuf, 0, buffer_size);
int strlen = recvfrom(sock_client, recebuf, buffer_size, 0, &fromaddr, &addrlen);
if (strlen > 0) }}
else
closesocket(sock_client);
wsacleanup();
return 0;}/*
sockaddr和sockaddr_in的區別:
sockaddr常用於bind、connect、recvfrom、sendto等函式的引數,指明位址資訊。是一種通用的套接字位址。
而sockaddr_in 是internet環境下套接字的位址形式。
所以在網路程式設計中我們會對sockaddr_in結構體進行操作。
使用sockaddr_in來建立所需的資訊,最後使用型別轉化就可以了。
伺服器端比較常見,點對點的接收只接收特定埠和ip的資料,當接收到指定客戶端的資料時做相應的響應,發資料給客戶端。*/
posted on 2018-06-20 09:24收藏
獲取客戶端的IP
在開發工作中,我們常常需要獲取客戶端的ip。一般獲取客戶端的ip位址的方法是 request.getremoteaddr 但是在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。原因 由於在客戶端和服務之間增加了中間 因此伺服器無法直接拿到客戶端的ip,伺服器端應用也無法...
獲取客戶端ip
1.統計訪問者ip位址 2.設定黑名單,黑名單的使用者不可以訪問聊天室。內容提要 這種情況下同樣透露了客戶端是使用了 伺服器 但編造了乙個虛假的隨機ip 220.4.251.159 代替客戶端的真實 ip來欺騙它 獲取客戶端 ip其實不是個簡單的活兒 因為存在 ip欺騙 和 問題 所以獲取客戶端的 ...
獲取客戶端的真實ip
servlet request getheader x forwarded for 獲取真實ip request方法客戶端ip request.getremoteaddr 輸出 192.168.0.106 客戶端主機名 request.getremotehost 輸出 abc request.get...