2017-09-02 31 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)

应该工作