【问题标题】:Connect() function in Python is not working in LinuxPython 中的 Connect() 函数在 Linux 中不起作用
【发布时间】:2017-09-02 13:07:09
【问题描述】:

以下是为 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 系统上运行 视窗系统

结果:得到预期的输出。

为什么会出现这种情况? connect() 函数是否有任何问题或代码有问题?

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

【问题讨论】:

  • 您是否在在同一个 IP 地址上同时运行 Windows 和 Linux 代码?如果不是,那你为什么要在第一种情况下尝试连接到同一台机器?
  • 如果您正在在相同的 IP 地址上运行它,则不能将相同的 IP 地址分配给两个实体。
  • 我不太明白你的问题,但无论服务器代码在 IP 192.168.4.39 上运行客户端代码在 IP 192.168.4.57 上运行,我都会给你信息
  • 什么机器有什么IP地址?如果您的 linux 机器是192.168.4.39,您需要调整您的连接调用以使用 192.168.4.57。
  • Linux 有 192.168.4.57 Windows 有 192.168.4.39

标签: python linux windows python-3.x connection


【解决方案1】:

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

然后像这样手动操作:

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

应该工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2019-01-22
    • 2019-11-19
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多