当前位置: 首页 > wzjs >正文

上高做网站公司网络营销课程

上高做网站公司,网络营销课程,推广网站怎么做知乎,合肥装修公司排行榜程序概述 这是一个使用Python socket模块实现的多线程聊天程序,包含客户端(chat_client.py)和服务器(chat_server.py)两部分。程序实现了基本的客户端间消息转发功能。 服务器端分析 (chat_server.py) 核心功能 用户管理:使用字典user_dic存储所有连接…

程序概述

这是一个使用Python socket模块实现的多线程聊天程序,包含客户端(chat_client.py)和服务器(chat_server.py)两部分。程序实现了基本的客户端间消息转发功能。

服务器端分析 (chat_server.py)

核心功能

  1. 用户管理:使用字典user_dic存储所有连接的客户端,键是客户端地址(IP,端口),值是对应的socket连接对象。

  2. 消息转发:接收一个客户端的消息后,解析出目标客户端地址,并将消息转发给目标客户端。

代码结构

import socket
from threading import Threaduser_dic = {}  # 存储所有客户端连接def send_recv(client_conn, client_addr):# 处理客户端消息的主循环while True:res = client_conn.recv(1024).decode("utf-8")print(f"客户端发送的消息:{res}")# 解析目标客户端地址tu = (res.split(":")[0], int(res.split(":")[1]))client_conn2 = user_dic.get(tu)  # 获取目标客户端socketif client_conn2 is None:print("对方已下线")else:# 转发消息message = "%s账户对您说%s"%(client_addr[0], res.split(":")[2])client_conn2.send(message.encode("utf-8"))if __name__ == '__main__':server_socket = socket.socket()server_socket.bind(('172.16.1.4', 8081))server_socket.listen()while True:print("等待客户端连接")client_conn, client_addr = server_socket.accept()print("客户端连接成功")user_dic[client_addr] = client_conn  # 存储新客户端Thread(target=send_recv, args=(client_conn, client_addr)).start()

关键点

  1. 多线程处理:每个客户端连接都会创建一个新线程(Thread)来处理消息。

  2. 消息格式:服务器期望的消息格式为IP:端口:消息内容

  3. 用户字典user_dic全局存储所有活跃连接,便于消息转发。

客户端分析 (chat_client.py)

核心功能

  1. 消息发送:从控制台输入消息并发送到服务器。

  2. 消息接收:接收服务器转发的消息并显示。

代码结构

import socket
from threading import Threaddef send_msg(client_socket):while True:msg = input("请输入要发送的消息:\n")client_socket.send(msg.encode("utf-8"))def recv_msg(client_socket):while True:msg = client_socket.recv(1024).decode("utf-8")print(msg)if __name__ == '__main__':client_socket = socket.socket()client_socket.bind(("172.16.1.4", 8082))  # 绑定本地端口client_socket.connect(('172.16.1.4', 8081))  # 连接服务器print(client_socket.getsockname())  # 打印本地地址信息# 启动发送和接收线程Thread(target=send_msg, args=(client_socket,)).start()Thread(target=recv_msg, args=(client_socket,)).start()

关键点

  1. 双线程设计:一个线程负责发送消息,另一个负责接收消息。

  2. 绑定端口:客户端也绑定了固定端口(8082),这在实际应用中可能需要动态分配。

  3. 简单交互:通过控制台输入输出实现简单交互。

程序工作流程

  1. 服务器启动,监听8081端口

  2. 客户端启动,连接服务器,绑定8082端口

  3. 客户端A发送消息格式为目标IP:目标端口:消息内容

  4. 服务器解析消息,查找目标客户端B的连接

  5. 服务器将消息转发给客户端B

  6. 客户端B接收并显示消息

改进建议

  1. 消息协议:定义更完善的消息协议,如使用JSON格式包含发送者、接收者、消息内容等。

  2. 异常处理:添加更多异常处理,如连接断开、消息格式错误等。

  3. 动态端口分配:客户端端口可以动态分配,避免冲突。

  4. 心跳机制:检测客户端是否在线,及时清理user_dic中的无效连接。

  5. 日志记录:添加日志功能,便于调试和问题追踪。

总结

这个程序展示了Python socket和多线程编程的基本应用,实现了简单的客户端间消息转发功能。虽然功能相对简单,但包含了网络编程的核心概念,适合作为学习案例。读者可以在此基础上扩展更复杂的功能,如群聊、文件传输、用户认证等。

http://www.dtcms.com/wzjs/24334.html

相关文章:

  • 网站建设公司 长春广告营销是做什么的
  • 自己做儿童衣服教程的网站产品推广方案范文500字
  • 做网站加模块郑州网络推广厂家
  • 淘宝客网站怎么做合肥网站建设
  • 创建网站的详细步骤热门seo推广排名稳定
  • 福田做棋牌网站建设哪家公司便宜网页设计与制作案例教程
  • 镇江建设银行网站电商平台引流推广
  • 一家专门做原型的网站网络媒体有哪些
  • 搭建cms网站苹果自研搜索引擎或为替代谷歌
  • 陕西电商网站建设威海百度seo
  • 网站建设关键词分类怎样建立自己网站
  • 在线作图网站广州竞价外包
  • 做b2b网站如何盈利模式南京seo新浪
  • 迁安网站开发长沙网站开发制作
  • 潍坊网站建设 潍坊做网站百度一下你就知道主页
  • 阿里云企业网站建设教程seo优化网站教程百度
  • 网站设计画布规范1680爆款采集推广引流软件
  • 做的网站上更改内容改怎么回事百度关键词关键词大全
  • 做ipo尽调需要用到的网站引擎搜索大全
  • 自贡做响应式网站开发公司产品如何做线上推广
  • 做物流网站有哪些内容营销网站的宣传、推广与运作
  • 网站制作难吗百度指数查询工具app
  • 日本网站做任务网站优化排名金苹果系统
  • 网站建设挣钱吗?独立站推广
  • 科技成果展示网站建设方案软件外包公司排名
  • 深圳信息公司做关键词系统优化的意义
  • 政府网站管理存在问题是作风建设外贸快车
  • 优秀企业网站ip子域名大全
  • 西安门户网站建设公司哪家好搜索引擎营销sem
  • 乐从网站开发湖南正规关键词优化首选