Python3 socket即时通讯脚本实现代码实例(threading多线程)


Posted in Python onJune 01, 2020

Python 提供了两个级别访问的网络服务。:

低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

------------------------------------------------服务端代码--------------------------------------

__author__ = "托尼老师"

"""
即时通讯原理 
@@@ 服务端代码

"""

from socket import *
import threading

ip = '0.0.0.0'
port =8888
# 定义 socket 参数

Server = socket(AF_INET,SOCK_STREAM)
Server.bind((ip,port))
Server.listen()
print("[*] SocketServer 正在监听...")

# 接受函数
def recvs():
  while 1:
    print(' [*] 客户端说: %s '% client.recv(1024).decode('utf-8'))

#发送函数
def sends():
  while 1:
    say = bytes(input(' [*] 我说: ') , encoding='utf-8')
    client.send(say)
# 堵塞接受请求

client,client_ip = Server.accept()
print(client_ip[0] +':'+str(client_ip[1])+' 连接成功!' )

# 创建接受线程
receive = threading.Thread(target =recvs ,args=() )
receive.start()
# 创建发送线程
send = threading.Thread(target =sends ,args=() )
send.start()

------------------------------------------------客户端代码--------------------------------------

__author__ = "托尼老师"

"""
即时通讯原理 
@@@ 客户端代码

"""

from socket import *
import threading

ip,port ='127.0.0.1',8888

Client = socket(AF_INET,SOCK_STREAM)
Client.connect((ip,port))

def sends() -> '发送函数':
  while 1:

    say = bytes(input("[*]我说: "),encoding='utf-8')
    Client.send(say)
def recvs() -> '接受函数':
  while 1:

    print('[*] 服务端说: %s ' % Client.recv(1024).decode('utf-8'))

receive = threading.Thread(target =recvs ,args=() )
receive.start()
# 创建发送线程
send = threading.Thread(target =sends ,args=() )
send.start()

先执行 服务端代码,再执行客户端代码,可以实现基本通讯功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python缩进区别分析
Feb 15 Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python排序算法实例代码
Aug 10 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
彻底理解Python中的yield关键字
Apr 01 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
PyTorch-GPU加速实例
Jun 23 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
python re模块和正则表达式
Mar 24 Python
Python如何在main中调用函数内的函数方式
Jun 01 #Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 #Python
基于Python绘制个人足迹地图
Jun 01 #Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 #Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 #Python
Python如何在循环内使用list.remove()
Jun 01 #Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 #Python
You might like
解决中英文字符串长度问题函数
2007/01/16 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
javascript 写类方式之五
2009/07/05 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python批量发送post请求的实现代码
2018/05/05 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
大学生入党推荐书范文
2014/05/17 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
Python OpenGL基本配置方式
2022/05/20 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python