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实现给文件添加内容及得到文件信息的方法
May 28 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python读取xlsx的方法
Dec 25 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python创建临时文件和文件夹
Aug 05 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
Python中实现三目运算的方法
2015/06/21 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
Python Process多进程实现过程
2019/10/22 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
计算机应用职专应届生求职信
2013/11/12 职场文书
车间组长岗位职责
2013/12/20 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
领班岗位职责范文
2014/02/06 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
全陪导游词
2015/02/04 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Go语言中break label与goto label的区别
2021/04/28 Golang
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python