Python使用socket去实现TCP客户端和TCP服务端


Posted in Python onApril 12, 2022

一、基于socket实现的TCP客户端

import socket
 
# 建立socket对象
# 参数一表示IP地址类型(AF_INET为IPV4,AF_INET6为IPV6),参数二表示连接的类型(SOCK_STREAM表示TCP形式,SOCK_DGRAM表示UDP形式)
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # 代表(ipv4,TCP)
 
# 连接服务器(元组中填目标ip地址和端口号)
client_socket.connect(('127.0.0.1',7777))
# 准备数据,需要转换为二进制数据,encode()中填写的是本地的字符串编码格式,mac、linux填utf-8
data='hello'.encode('gbk')
# 向服务器发送数据
client_socket.send(data)
# 接收数据,必须要指定接收数据的大小,单位字节,最大4096,即4k
recv_data=client_socket.recv(1024)
# 接收的数据要进行decode()解码,发送的时候用啥编码就填啥编码
recv_data=recv_data.decode('gbk')
print(recv_data)
# 关闭连接
client_socket.close()

二、基于socket实现的TCP服务端

import socket
# 建立socket对象
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 如果服务器是一次性的,如果服务器结束后马上重新启动会出现一个错误,原因是地址和端口没有被释放
# OSError: [Errno 48] Address already in use
# 如果想马上释放,要设置一下socket选项
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 绑定IP和端口,如果在绑定IP时没有给定IP,默认是绑定本地IP
server_socket.bind(('',7777))
# 设置监听(最大监听数),设置完后服务端会进入被动模式,不能主动连接客户端,只能被动地等待客户端的连接
server_socket.listen(128)
# 等待客户端连接,连接上后,函数会返回客户端的Socket对象和地址信息
client_socket,ip_port=server_socket.accept()
print(f'客户端{ip_port[0]}使用端口{ip_port[1]}连接成功...')
# 接收客户端数据
data=client_socket.recv(1024)
# 查看客户端发送的数据长度
if len(data)!=0:
    data=data.decode('gbk')
    print(f'客户端{ip_port[0]}使用端口{ip_port[1]}发送是数据是{data}')
else:
    print(f'客户端{ip_port[0]}使用端口{ip_port[1]}关闭了连接')
 
# 给客户端发送数据
data='你好'.encode('gbk')
client_socket.send(data)
# 关闭客户端
client_socket.close()
# 关闭服务端
server_socket.close()

到此这篇关于Python基于socket实现TCP客户端和服务端的文章就介绍到这了!

Python 相关文章推荐
python网络爬虫采集联想词示例
Feb 11 Python
Python实现的一个自动售饮料程序代码分享
Aug 25 Python
python取代netcat过程分析
Feb 10 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
python获取Pandas列名的几种方法
Aug 07 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python小白切忌乱用表达式
May 29 Python
python 深度学习中的4种激活函数
Sep 18 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Python闭包的定义和使用方法
Apr 11 #Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
You might like
PHP调用三种数据库的方法(1)
2006/10/09 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
党课培训主持词
2014/04/01 职场文书
校企合作协议书
2014/04/16 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
导游词欢迎词
2015/02/02 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
python 对图片进行简单的处理
2021/06/23 Python
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
Javascript webpack动态import
2022/04/19 Javascript