基於UDP的IP對IP的客戶端程式

2021-09-08 06:21:10 字數 1569 閱讀 8327

#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...