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 jieba分词模块的基本用法
Nov 09 Python
Python编程argparse入门浅析
Feb 07 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
python机器学习之KNN分类算法
Aug 29 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
python3.x中安装web.py步骤方法
Jun 23 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
Python闭包的定义和使用方法
Apr 11 #Python
什么是Python装饰器?如何定义和使用?
Apr 11 #Python
Python经常使用的一些内置函数
python处理json数据文件
Python几种酷炫的进度条的方式
Python通过loop.run_in_executor执行同步代码 同步变为异步
Python Pandas解析读写 CSV 文件
You might like
FCKeditor添加自定义按钮
2008/03/27 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
详解vue-router基本使用
2017/04/18 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
sklearn的predict_proba使用说明
2020/06/28 Python
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
仓库理货员岗位职责
2013/12/18 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
写求职信有什么意义
2014/02/17 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
研究生个人学年总结
2015/02/14 职场文书
高中英语教学反思范文
2016/03/02 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
golang中的空接口使用详解
2021/03/30 Python
详解Python requests模块
2021/06/21 Python
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
Kubernetes控制节点的部署
2022/04/01 Servers