2017-09-02 45 views
-1

工作以下是爲Python 3書面連接()在Python的功能是不是在Linux中

服務器代碼的服務器和客戶端代碼:

import sys 
from socket import socket, gethostbyname, AF_INET, SOCK_STREAM 

PORT_NUMBER = 5060 
SIZE = 1024 

hostName = gethostbyname('0.0.0.0') 

recvSocket = socket(AF_INET, SOCK_STREAM) 
recvSocket.bind((hostName, PORT_NUMBER)) 
recvSocket.listen(5) 



print("Listening for client...") 

(conn,addr)=recvSocket.accept() 



print ("Test server listening on port {0}\n".format(PORT_NUMBER)) 
print("Connected to client at address {0}\n".format(addr)) 
print("Connection is ",conn) 

客戶端代碼:

import sys 
from socket import socket,AF_INET,SOCK_STREAM,gethostbyname 

hostname=gethostbyname('0.0.0.0') 
print ("Creating") 
sendsocket=socket(AF_INET,SOCK_STREAM) 
print ("Connecting socket") 
sendsocket.connect(('192.168.4.39',5060)) 
print ("connected") 
data=input("Enter value") 
sendsocket.sendto(data.encode('utf-8'),(SEND_IP,SEND_PORT)) 

現在我面臨的情況如下:

1st Scenari Ø

服務器代碼在Windows系統上運行,客戶端代碼是 一個Linux系統上運行

結果:客戶端代碼被卡住打印後「連接插座」

第二種情景

服務器代碼在Linux系統上運行,客戶端代碼在上運行Windows系統的

結果:讓輸出符合市場預期。

爲什麼會發生這種情況? connect()函數是否有任何問題或代碼有問題?

注意:服務器和客戶端系統都在同一個網絡上。 192.168.4.39是服務器代碼正在運行的IP地址。

+0

你同時運行Windows和Linux的代碼在**相同的IP地址**?如果不是,那麼爲什麼你要在第一種情況下連接到同一臺機器? –

+0

如果您*在相同的IP地址上運行它,則不能將相同的IP地址分配給兩個實體。 –

+0

我不太明白你的問題,但我會給你的信息不管 服務器代碼是在IP上運行192.168.4.39 客戶端代碼是在IP上運行192.168.4.57 –

回答

0

首先確保客戶端和服務器連接well.try ping對方。

然後手工做這樣的:

Ssocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

應該工作