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 14 Python
简单学习Python time模块
Apr 29 Python
sublime text 3配置使用python操作方法
Jun 11 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
python flask几分钟实现web服务的例子
Jul 26 Python
基于python操作ES实例详解
Nov 16 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
python简单的三元一次方程求解实例
Apr 02 Python
Python读取pdf表格写入excel的方法
Jan 22 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实现简单汉字验证码
2015/07/28 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python实现简单成绩录入系统
2019/09/19 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python ini文件常用操作方法解析
2020/04/26 Python
房屋转让协议书范本
2014/04/11 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
会计专业自荐书
2014/07/08 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
抗洪救灾标语
2014/10/08 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书