socket程式設計,獲得客戶端埠號問題

時間 2021-10-14 21:30:54

1樓:匿名使用者

因為內網主機向外網傳送請求,會經過路由器,路由器會進行**如:路由器公網ip 188.188.188.188你的內網ip 192.168.1.8

若你發起請求 192.168.1.8:8970-> 對方ip:埠路由器收到後會記錄你的內網ip和埠(建立路由表),並啟用新的埠請求對方

實際可能是:188.188.188.188:6780 - >對方ip:埠

補充一下,這個叫網路地址轉換協議,也就是 nat**

2樓:匿名使用者

這不科學啊,肯定不會變的,埠號變的話伺服器怎麼能向客戶端發資料呢~

建議樓主繼續抓包跟蹤,跟蹤在哪個點(客戶端、路由器、伺服器)上埠發生改變了。在單位都是區域網,我也幫不了lz做實驗跟蹤,抱歉

3樓:肖嘉無昂熙

本機你可以寫成

"127.0.0.1"或者"localhost",如果是安卓本機就是"10.0.2.2"

埠隨便你寫,只要系統不衝突就行。

4樓:遼北地區著名狠銀兒

tcp嗎? 伺服器埠號是接受到客戶端的request之後 伺服器自己分配的?你**怎麼寫的?

php用socket獲得客戶端的ip和埠

5樓:匿名使用者

1、測試環境:

伺服器ip:192.168.150.1

客戶端ip:192.168.150.2

2、測試過程:

客戶端伺服器將在本機(192.168.150.

2)通過socket傳送資料到服務端(192.168.150.

2)的socket伺服器上,服務端接收到客戶端傳送的資料後返回一些資訊給客戶端。

3、服務端檔案內容:

#server.php

<?php

//獲取tcp協議號碼。

$tcp = getprotobyname("tcp");

// 建立server端socket ,建立並返回一個套接字,也稱作一個通訊節點。一個典型的網路連線由 2 個套接字構成,一個執行在客戶端,另一個執行在伺服器端。

$socket = socket_create(af_inet, sock_stream, $tcp);

//繫結要監聽的ip和埠,這裡繫結的ip一定要寫區域網ip,寫成127.0.0.1客戶端將無法與服務端建議連線。

socket_bind($socket, '192.168.150.1', 10008);

//監聽埠

socket_listen($socket);

//初始化一個資料,和客戶端通訊

$buffer = "connect";

while (true) else else

// 從客戶端獲取得的資料

while ($data = @socket_read($connection, 1024, php_normal_read))

} //關閉 socket

socket_close($connection);

printf("closed the socket\n");

} ?>

4、客戶端檔案內容:

client.php

<?php

// 建立客戶端的socet連線

$socket = socket_create(af_inet, sock_stream, sol_tcp);

//連線伺服器端socket

$connection = socket_connect($socket, '192.168.150.1', 10008);

//要傳送到服務端的資訊。

$send_data = "this data will send to server!";

//客戶端去連線服務端並接受服務端返回的資料,如果返回的資料保護not connect就提示不能連線。

while ($buffer = @socket_read($socket, 1024, php_normal_read)) else

//伺服器端收到資訊後,客戶端接收服務端傳給客戶端的迴應資訊。

while ($buffer = socket_read($socket, 1024, php_normal_read))

} }?>

5、在服務端socket服務啟動程序。

interactive mode enabled

6、服務端啟動後檢視啟動的程序及埠。

#netstat -tnlp |grep 10008

tcp 0 0 192.168.150.

13:10008 0.0.

0.0:* listen 28892/php

7、在客戶端(192.168.1.2)上執行傳輸

interactive mode enabled

buffer data: connect

writing to socket

sent to server:this data will send to server!

response from server was:thank you client, you data information received

8、回到服務端上檢視接收到的資訊。

interactive mode enabled

socket connected

send data to client

wrote to socket

buffer: this data will send to server!

9、參考資料

socket_create()函式需要三個引數:一個協議、一個socket型別、一個公共協議。socket_create()函式執行成功返回一個包含socket的資源型別,如果沒有成功則返回false。

6樓:在晴天的雨傘

socket_getpeername() 獲取遠端類似主機的ip地址

socket_getsockname() 獲取本地socket的ip地址

怎麼感覺你用的實際上是對的,難道用nginx一類的負載均衡伺服器了

使用socket編寫一個客戶端程式,連線伺服器的埠8888,建立連線後讀取伺服器端發來的資訊並顯示到螢幕上

7樓:匿名使用者

問題是現成的。

如何獲得socket連線客戶端的ip地址

馬三小夥兒 如果伺服器端要獲取客戶端ip的話 假設socket bind listen 函式已經完成addrlen sizeof client 那麼client.sin port 就是客戶端的埠client.sin addr.s addr 就是客戶端的ip。這兩個都是以網路位元組序來儲存的,如果要p...

用mfc做socket通訊時客戶端怎麼把輸入的使用者名稱和

char buff 1024 char buff2 1024 10 int receivelen strcpy buff,username mike pass 1234567890 typedef int winapi icepub tcpsendandreceivetext char sendbu...

如何做遊戲客戶端,如何製作遊戲客戶端?

1.編寫遊戲引擎 建模 需要熟練掌握c c microsoft develop studio開發環境 使用sdk或者mfc directx opengl sql程式設計 sqlserver或oracle資料庫配置。2.策劃 美工 音效 maya 3dmax ps 音效製作方面不熟,這方面無法提供 流...