多线程的UDP聊天器
时间:2019-09-01
本文章向大家介绍多线程的UDP聊天器,主要包括多线程的UDP聊天器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# pcj
import socket
import threading
# def recv_msg(udp_socket):
# while True:
# recv_date = udp_socket.recvfrom(1024)
# print(recv_date[0].decode("gbk"),recv_date[1])
#
# def send_msg(udp_socket,dest_ip,dest_port):
# while True:
# send_date = input("请输入要发送的信息")
# udp_socket.sendto(send_date.encode("gbk"),(dest_ip,dest_port))
#
#
# def main():
# # 创建UPD套接字
# udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# # 邦定本地信息
# udp_socket.bind(("",9999))
# dest_ip = input("请输入对方IP")
# dest_port = int(input("请输入PORT"))
# #接收信息
# t_recv=threading.Thread(target=recv_msg,args=(udp_socket,))
# t_send =threading.Thread(target=send_msg,args=(udp_socket,dest_ip,dest_port))
# t_recv.start()
#
# #发送信息
# t_send.start()
#0--------再写一次
def send_msg(udp_socket,dest_ip,dest_port):
while True:
send_date = input("请输入要发送的信息")
udp_socket.sendto(send_date.encode("gbk"), (dest_ip, dest_port))
def recv_msg(udp_socket):
while True:
recv_date = udp_socket.recvfrom(1024)
print(recv_date[0].decode("gbk"))
def main():
# 创建套接字
udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.bind(("",9999))
dest_ip = input("请输入IP")
dest_port = int(input("请输入PORT"))
t_send = threading.Thread(target=send_msg, args=(udp_socket,dest_ip,dest_port))
t_recv = threading.Thread(target=recv_msg, args=(udp_socket,))
# 发送信息
t_send.start()
# 接收信息
t_recv.start()
if __name__ == '__main__':
main()
原文地址:https://www.cnblogs.com/pcjbk/p/11441886.html
- Redux框架reducer对状态的处理
- 使用Spring Cloud Security OAuth2搭建授权服务
- Nginx性能优化
- linux 如何正确的关闭mongodb
- 运用Aggregator模式实现MapReduce
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- spring boot项目在外部tomcat环境下部署
- 利用Actor实现管道过滤器模式
- SpringBoot整合Quartz定时任务 的简单实例
- 从机器学习学python(一) ——numpy中的shape、tile、argsort
- 剖析响应式编程的本质
- 从机器学习学python(二) ——iteritems、itemgetter、sorted、sort
- 基于MVC理解React+Redux
- JavaScript的IIFE(即时执行方法)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《闲扯Redis七》Redis字典结构的底层实现
- 深入理解JavaScript闭包之什么是闭包
- 按需取余
- Cypress 获取table内容动态tr和td
- Java 并发编程之 ConcurrentHashMap 源码分析(小长文)
- python的安装
- 【源码分析】SpringBoot2中取代Druid的超级连接池:HikariCP之ConcurrentBag
- HTML5项目实战之旅行社网站——PC端固定布局
- HTML5项目实战之旅行社网站——移动端流体布局
- HTML5项目实战之旅行社网站——兼容响应式布局
- Oracle数据库相关函数解析
- Oracle用户操作、数据类型、表格修改、约束设置详解
- MyBatis三个查询方法_selectList_selectOne_selectMap
- 通过JDBC、DBUtil实现登陆的练习
- JDBC小项目—员工管理系统