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读取mp3中ID3信息的方法
Mar 05 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
Python 打印中文字符的三种方法
Aug 14 Python
python实现公司年会抽奖程序
Jan 22 Python
Python转换时间的图文方法
Jul 01 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python数据正态性检验实现过程
Apr 18 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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+dbfile开发小型留言本
2006/10/09 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
解决Python传递中文参数的问题
2015/08/04 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
简单实现python收发邮件功能
2018/01/05 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python调用c++传递数组的实例
2019/02/13 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
学用政策心得体会
2014/09/10 职场文书
股东合作协议书
2014/09/12 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
晚会开幕词
2015/01/28 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书