ch在python_Pythonch

错误是因为sys.stdin不是Windows上的套接字。这降低了select的有用性,因此我们被迫使用线程。在

以下是适用于Windows的最小正确客户端实现:

聊天_客户端.py在import sys

import socket

import select

from threading import Thread

def receive(s):

"""Handles receiving of messages."""

while True:

try:

ready = select.select([s], [], [])

if ready[0]:

data = s.recv(1024)

if not data:

print '\nDisconnected from chat server'

sys.exit()

else:

# print data

sys.stdout.write(data)

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

sys.stdout.flush()

except OSError: # Possibly client has left the chat.

break

def chat_client2():

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

receive_thread = Thread(target=receive, args=(s,))

receive_thread.daemon = True

receive_thread.start()

while 1:

# user entered a message

msg = sys.stdin.readline()

s.send(msg)

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

sys.stdout.flush()

if __name__ == "__main__":

sys.exit(chat_client2())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值