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 26 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
使用Pytorch来拟合函数方式
Jan 14 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
python实现逢七拍腿小游戏的思路详解
May 26 Python
python打包生成so文件的实现
Oct 30 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
python实现京东秒杀功能
2018/07/30 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Python 创建TCP服务器的方法
2020/07/28 Python
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
高二英语教学反思
2014/01/19 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
委托书样本
2014/04/02 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
2014年司法所工作总结
2014/11/22 职场文书
SQL Server实现分页方法介绍
2022/03/16 SQL Server
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers