python教程1003无标题_OSError:[WinError 10038]试图对非s的对象执行操作

该博客探讨了一段Python代码在尝试使用相同端口9009连接客户端和服务器时遇到的OSError。代码中展示了如何建立连接、处理输入输出以及断开连接的情况。作者在寻求帮助,希望能解决无法连接的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在测试一个客户端方案

服务器和客户端使用相同的端口9009进行连接

不知何故,下面的代码给出了标题中所写的OSError:import sys

import socket

import select

def chat_client():

if(len(sys.argv) < 3) :

print ('Usage : python chat_client.py hostname port')

sys.exit()

host = sys.argv[1]

port = int(sys.argv[2])

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

s.settimeout(2)

# connect to remote host

try :

s.connect((host, port))

except :

print ('Unable to connect')

sys.exit()

print ('Connected to remote host. You can start sending messages')

sys.stdout.write('[Me] '); sys.stdout.flush()

while 1:

socket_list = [sys.stdin, s]

# Get the list sockets which are readable

ready_to_read,ready_to_write,in_error = select.select(socket_list,[],[])

# the timeout argument is omitted in above code,so chat_client blocks until a fd is ready

for sock in ready_to_read:

if sock == s:

# incoming message from remote server, s

data = sock.recv(4096) # sock.recv argument is buffsize, recommend 4096

if not data : # if not (data is not none), data is empty

print ('\nDisconnected from chat server')

sys.exit()

else : # data has something

#print data

sys.stdout.write(data) # write something to standard output buffer

sys.stdout.write('[Me] '); sys.stdout.flush() # write everything to terminal from buffer

else : # sock ! = s

# user entered a message

msg = sys.stdin.readline() # readline pick up everything from stdin

s.send(msg)

sys.stdout.write('[Me] '); sys.stdout.flush()

if __name__ == "__main__":

sys.exit(chat_client())

有人能给我一些提示吗?:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值