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

都可以运行,但是client发送一个信息后,会报错???

服务器:

#coding = utf-8
import random
import socketserver


class MyServer(socketserver.BaseRequestHandler):

    #如果handle方法出现报错,则会进行跳过
    #setup方法和finish方法无论如何都会进行执行
    #首先执行setup方法
    def setup(self):
        pass

    #然后执行handle方法
    def handle(self):
        #定义连接变量
        conn = self.request

        #定义发送消息
        msg = "Hello World"

        #发送消息
        conn.send(msg.encode()+"已发送消息")

        #进入循环,不断接收信息
        while True:

            #定义接收客户端消息
            data = conn.recv(1024)

            #打印接收的消息
            print(data.decode())

            #如果接收到exit  则进行循环的退出
            if data == b"exit":
                break
            #否则返回接收数据
            conn.send(data)
            #并发送一个随机数
            conn.send(random.randint(1,200).encode())
        #关闭连接对象
        conn.close()

    #最后执行finish方法
    def finish(self):
        pass


if __name__ == '__main__':
        #创建多线程实例
        server = socketserver.ThreadingTCPServer(("127.0.0.1",8888),MyServer)

        #开启异步多线程,等待客户端连接
        server.serve_forever()

客户端:

#coding = utf-8

#导入模块
import socket

#创建实例
client = socket.socket()

#访问的ip地址和port端口
ip_port = ("127.0.0.1",8888)

#连接主机
client.connect(ip_port)


#定义一个循环,不断的接收和发送消息
while True:

    #接收第二个服务器信息
    data = client.recv(1024)         #1024表示接受缓冲的数据为1024个byte字节

    #打印接受的数据
    #此处的byte型数据特质python3.x以上
    print(data.decode())   #因为3.x直接接受的byte型数据,需要decode方法进行解码




    #输入发送的消息
    msg_input = input("请输入发送信息:")

    #发送消息
    client.send(msg_input.encode())
    if msg_input == "exit":
        break



    #接收第一个服务器信息
    data = client.recv(1024)

    print(data)

运行结果:

https://img1.sycdn.imooc.com//5c12229d00013dff06090145.jpg

https://img1.sycdn.imooc.com//5c12228d00012e4a06060188.jpg

正在回答

1 回答

你得到的随机数是int类型,不用编码!或者你将int类型转化成str类型

conn.send(random.randint(1,200))
conn.send(random.randint(1,200).encode())


0 回复 有任何疑惑可以回复我~
#1

a鹊桥仙 提问者

谢谢 我修改了随机数发送代码 现在已经正常运行了 #并发送一个随机数 rand = random.randint(1,300) conn.send(str(rand).encode())
2018-12-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

都可以运行,但是client发送一个信息后,会报错???

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信