简单的 Python 套接字服务器不能在 macOS 上运行

我创建了一个小的 Python 套接字服务器代码,当我尝试连接客户端时,我得到:


OSError: [Errno 57] Socket is not connected


我不确定为什么我得到它,即使服务器正在运行。


这是我的代码: server.py


# Imports

import socket



# Variables

ip_address = ''

ip_port = 10000

max_connections = 5


txt = 'utf-8'

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



# Code

s.bind((socket.gethostname(), ip_port))

s.listen(max_connections)


while True:

    clientsocket, address = s.accept()

    print(f"{address} connected!")

    clientsocket.send(bytes("quit", txt))

client.py


# Imports

import socket



# Variables

ip_address = ''

ip_port = 10000


txt = 'utf-8'

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

msg = s.recv(1024)



# Code

"""Connect to the server"""

s.connect((ip_address, ip_port))



while True:

    var = msg.decode(txt)

    print(var)

    if var == "quit":

        break


墨色风雨
浏览 171回答 1
1回答

隔江千里

我已经更改了您的代码中的一些点,它在这里工作正常。我已经将 ip_address 设置为 127.0.0.1 担心 MacOS 的安全问题。我还删除了发送函数的第二个参数。server.py# Importsimport socket# Variablesip_address = '127.0.0.1'ip_port = 10000max_connections = 5txt = 'utf-8's = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# Codes.bind((ip_address, ip_port))s.listen(max_connections)while True:    clientsocket, address = s.accept()    print("{} connected!", address)    clientsocket.send(b"quit")在客户端,在套接字连接之前调用 recv。client.py# Importsimport socket# Variablesip_address = '127.0.0.1'ip_port = 10000txt = 'utf-8's = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# Code"""Connect to the server"""s.connect((ip_address, ip_port))while True:    msg = s.recv(1024)    var = msg.decode(txt)    if var == "quit":        break
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python