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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
简单了解Python中的几种函数
Nov 03 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python的log日志功能及设置方法
Jul 11 Python
关于Python-faker的函数效果一览
Nov 28 Python
python 实现list或string按指定分段
Dec 25 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python必学知识之文件操作(建议收藏)
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实现获取文章内容第一张图片的方法
2014/11/04 PHP
php常用hash加密函数
2014/11/22 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
详解vue中组件参数
2018/07/09 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
python获取多线程及子线程的返回值
2017/11/15 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Numpy中的mask的使用
2018/07/21 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
超市采购员岗位职责
2014/02/01 职场文书
职业规划实施方案
2014/06/10 职场文书
幼儿园见习报告
2014/10/30 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
新年晚会开场白
2015/05/29 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书