a鹊桥仙
2018-12-13 17:13
服务器:
#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)运行结果:


你得到的随机数是int类型,不用编码!或者你将int类型转化成str类型
conn.send(random.randint(1,200))
conn.send(random.randint(1,200).encode())
python运维-Socket网络编程
22571 学习 · 72 问题
相似问题