以下是为Python 3编写的服务器和客户端代码

服务器代码:

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))


现在我面临的情况如下:

第一种情况

服务器代码在Windows系统上运行,客户端代码为
 在Linux系统上运行

结果:打印“连接插座”后客户端代码被卡住

第二种情况

服务器代码在Linux系统上运行,客户端代码在Linux系统上运行
 Windows系统

结果:获得预期的输出。

为什么会发生这种现象? connect()函数是否有任何问题或代码有问题?

注意:服务器和客户端系统都在同一网络上。 192.168.4.39是运行服务器代码的IP地址。

最佳答案

首先确保客户端和服务器连接良好。尝试相互ping通。

然后像这样手动进行:

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

应该管用

关于python - Python中的Connect()函数在Linux中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46014139/

10-13 00:02