我与python约个会:30.2. 企业级开发进阶2.2:TCP实战

来源:互联网 发布:围棋软件免费下载 编辑:程序博客网 时间:2024/06/06 19:16

1. 简易对讲程序的需求

对讲机程序,就是双方互相通话的过程,简单一点的逻辑就是双方每次只能说一句话,然后等待对方回答之后继续说话。

2. 编程实现服务端

import socket# 创建服务端套接字对象service = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定主机和端口号service.bind(("", 8888))# 启动监听service.listen(1)# 接收客户端连接print("服务端程序启动成功,等待客户端接入.....")conn, addr = service.accept()print("客户端已经接入,可以进行通信" + str(addr) + ";等待客户端发送消息...")# 发送欢迎消息conn.sendall("天王盖地虎,宝塔镇河妖".encode("utf-8"))# 循环读取消息while True:    # 接收并打印客户端发送消息    msg = conn.recv(1024)    msg = msg.decode("utf-8")    print("客户端:" + msg)    # 如果客户端发送bye字符串,跳出循环    if msg == "bye":        service.sendall("over!")        break;    # 向客户端发送消息    info = input("请输入要发送给客户端的消息:")    info = info.encode("utf-8")    conn.sendall(info)# 关闭该客户端的连接conn.close()

3. 编程实现客户端

import socket# 创建客户端套接字对象client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接服务器client.connect(("192.168.10.115", 8888))# 循环处理发送消息while True:    # 接收服务器的消息    msg = client.recv(1024)    msg = msg.decode("utf-8")    print("服务器:" + msg)    # 如果一旦接收到over!字符串,跳出循环    if msg=="over!":        print("程序退出")        break;    # 给服务器发送消息    info = input("请输入要发送的消息:")    info = info.encode("utf-8")    client.sendall(info)#关闭客户端套接字对象client.close()

4. 测试程序

首先运行服务端程序


服务端程序等待中

运行客户端程序


客户端程序启动

开始互相发送消息
服务端


服务端控制台界面

客户端


客户端控制台界面

整体效果如上所述,对于TCP网络编程的部分内容都有涉及,大家在独立完成的基础上,可以思考一个问题:怎么退出对话?!

阅读全文
0 0