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实现CET查分的方法
Mar 10 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
python绘制简单彩虹图
Nov 19 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python使用folium excel绘制point
Jan 03 Python
Python I/O与进程的详细讲解
Mar 08 Python
python实现对输入的密文加密
Mar 20 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
如何在sublime编辑器中安装python
May 20 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
Python标准库之typing的用法(类型标注)
Jun 02 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自动反斜杠的函数代码
2010/01/05 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
php生成word并下载代码实例
2019/03/15 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
Java如何支持I18N?
2016/10/31 面试题
主管职责范文
2013/11/09 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
学习张林森心得体会
2014/09/10 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL