为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

墨色风雨 2023-02-22 13:54:28
我创建了一个小的 Python 套接字服务器代码,当我尝试连接客户端时,我得到:OSError: [Errno 57] Socket is not connected我不确定为什么我得到它,即使服务器正在运行。这是我的代码: server.py# Importsimport socket# Variablesip_address = ''ip_port = 10000max_connections = 5txt = 'utf-8's = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# Codes.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# Importsimport socket# Variablesip_address = ''ip_port = 10000txt = '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
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

我已经更改了您的代码中的一些点,它在这里工作正常。我已经将 ip_address 设置为 127.0.0.1 担心 MacOS 的安全问题。我还删除了发送函数的第二个参数。


server.py


# Imports

import socket


# Variables

ip_address = '127.0.0.1'

ip_port = 10000

max_connections = 5


txt = 'utf-8'

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


# Code

s.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


# Imports

import socket


# Variables

ip_address = '127.0.0.1'

ip_port = 10000


txt = '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


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信