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读大数据txt
Mar 28 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
python中单例常用的几种实现方法总结
Oct 13 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
Pandas分组与排序的实现
Jul 23 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python把图片转化为pdf代码实例
Jul 28 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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中的cookie
2006/11/26 PHP
简单的过滤字符串中的HTML标记
2006/12/25 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
php实现三级级联下拉框
2016/04/17 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
JavaScript 不只是脚本
2007/05/30 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
python图片验证码生成代码
2016/07/02 Python
python学习基础之循环import及import过程
2018/04/22 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
商得四方公司面试题(gid+)
2014/04/30 面试题
农救科工作职责
2013/11/27 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
办公室岗位职责
2014/02/12 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
委托证明书
2014/09/17 职场文书