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过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
Django自定义过滤器定义与用法示例
Mar 22 Python
python3实现名片管理系统
Nov 29 Python
浅析python参数的知识点
Dec 10 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
python用700行代码实现http客户端
Jan 14 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
Python Django项目和应用的创建详解
Nov 27 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操作文件方法问答
2007/03/16 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
python 读取串口数据的示例
2020/11/09 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
经管应届生求职信范文
2014/05/18 职场文书
党员自我剖析材料
2014/08/31 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
行政诉讼答辩状
2015/05/21 职场文书
python如何获取网络数据
2021/04/11 Python
Java SSM配置文件案例详解
2021/08/30 Java/Android