使用127.0.0.1這個地址可以連線上服務端,但是使用本機真實IP(ipconfig)卻連不上

starter110發表於2014-02-15

最近使用php寫了一個socket的server和clinet,使用使用127.0.0.1這個地址可以連線上服務端,但是使用本機真實IP(ipconfig)卻連不上。

在server中建立了


一個sorcket,

client的

$socket_client = stream_socket_client('tcp://10.68.33.219:2000', $errno, $errstr, 30);  

卻死活連線不上,10.68.33.219是我本就ip。使用netstat命令檢視確實沒有監聽到:

活動連線

 協議  本地地址          外部地址        狀態
 TCP    0.0.0.0:21             ali-68357n:0           LISTENING
 TCP    0.0.0.0:80             ali-68357n:0           LISTENING
 TCP    0.0.0.0:135            ali-68357n:0           LISTENING
 TCP    0.0.0.0:445            ali-68357n:0           LISTENING
 TCP    0.0.0.0:3306           ali-68357n:0           LISTENING
 TCP    0.0.0.0:18386          ali-68357n:0           LISTENING
 TCP    0.0.0.0:49152          ali-68357n:0           LISTENING
 TCP    0.0.0.0:49153          ali-68357n:0           LISTENING
 TCP    0.0.0.0:49154          ali-68357n:0           LISTENING
 TCP    0.0.0.0:49156          ali-68357n:0           LISTENING
 TCP    0.0.0.0:49157          ali-68357n:0           LISTENING
 TCP    10.68.33.219:139       ali-68357n:0           LISTENING

使用

$socket_client = stream_socket_client('tcp://127.0.0.1:2000', $errno, $errstr, 30);  
就能和client端連線上。


考慮stream_socket_client()在server端沒有是否沒有指定ip的原因,於是換介面

$commonProtocol =getprotobyname("tcp");
		$socket =socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
		socket_bind($socket,'10.68.33.219', $port);
		socket_listen($socket);

使用netstat檢視,可以發現了監聽

  TCP    10.68.33.219:2000      ali-68357n:0           LISTENING

client端也可以連線上了。





相關文章