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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python 转义字符详细介绍
Mar 21 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Python爬虫新手入门之初学lxml库
Dec 20 Python
Python入门基础之数字字符串与列表
Feb 01 Python
如何利用pygame实现打飞机小游戏
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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php adodb连接不同数据库
2009/03/19 PHP
关于PHP开发的9条建议
2015/07/27 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
vue实现记事本功能
2019/06/26 Javascript
python访问类中docstring注释的实现方法
2015/05/04 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python算法表示概念扫盲教程
2017/04/13 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
节能减排倡议书
2014/04/15 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
2014年安全生产责任书
2014/07/22 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
建设工程授权委托书
2014/09/22 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
MySQL详细讲解变量variables的用法
2022/06/21 MySQL