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版
Dec 07 Python
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
python实现简单名片管理系统
Nov 30 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
详解使用Python下载文件的几种方法
Oct 13 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 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/03/04 星际争霸
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
JavaScript OOP面向对象介绍
2010/12/02 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
理解Python中的With语句
2016/03/18 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
老公给老婆的保证书
2014/04/28 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
售房协议书范本
2015/08/11 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python
Python之基础函数案例详解
2021/08/30 Python
MySql分区类型及创建分区的方法
2022/04/13 MySQL
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android