TCP socket编程

一、服务端代码

#encoding = utf -8
#导入socket库
from socket import *
#等待客户端来连接,主机地址为0.0.0.0表示绑定本机所有网络接口ip地址
IP = '0.0.0.0'
#端口号
PORT = 50000
#定义一次从socket缓存区最多读入512个字节数据
BUFLEN = 512

#实例化一个socket编程
#参数AF_INET 表示该socket网络层使用IP协议
#参数SOCK_STREAM表示该socket传输层使用tcp协议

listenSocket = socket(AF_INET, SOCK_STREAM)

#socket 绑定地址和端口
listenSocket.bind((IP, PORT))

#使socket处于监听状态,等待客户端连接请求
#参数5表示 最多接受多少个等待连接的客户端
listenSocket.listen(5)
print(f"服务端启动成功,在{PORT} 端口等待客户端连接 ……")

dataSocket, addr = listenSocket.accept()
print("接受一个客户端连接: ", addr)

while True:
    #尝试读取对方发送的消息
    # BUFLEN 指定从接受缓冲里最多读取多少字节
    recved = dataSocket.rec(BUFLEN)
    
    #如果返回空Bytes,表示对方关闭了连接
    #退出循环,结束消息收发
    if not recved:
        break
    
    #读取的字节数据是Bytes类型,需要解码为字符串
    info = recved.decode()
    print(f"收到对方消息: {info}")
    
    #发送的数据类型必须的bytes,所以需要编码
    dataSocket.send(f"服务端接收了信息 {info}".encode())

#服务端调用close()关闭socket
dataSocket.close()
listenSocket.close()
 

二、客户端代码

#encoding = utf -8
#导入socket库
from socket import *

IP = '127.0.0.1'
SERVER_PORT = 50000
BUFLEN = 512

#实例化一个socket编程,指明协议
dataSocket = socket(AF_INET, SOCK_STREAM)

#连接服务端socket
dataSocket.connect((IP, SERVER_PORT))

while True:
    #从终端读入用户输入的字符串
    toSend = input(" >> ")
    if toSend == "":
        break
    #发送消息,编码为bytes
    dataSocket.send(toSend.encode())
    
    #等待接收服务端的消息
    recved = dataSocket.recv(BUFLEN)
    #如果返回空Bytes,表示对方关闭了连接
    if not recved:
        break
    
    #打印读取的消息
    print(recved.decode())

dataSocket.close()
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

比较常见CPU的区别:Intel、ARM、AMD

一、开发公司不同 1、Intel:是英特尔公司开发的中央处理器,有移动、台式、服务器三个系列。 2、ARM:是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。 3、AMD:由AMD公司生产的处理器。 二、技术不同 1、Intel&…

测试|自动化测试(了解)

测试|自动化测试(了解) 1.什么是自动化测试☆☆☆☆ 自动化测试相当于把人工测试手段进行转换,让代码执行。 2.自动化测试的分类☆☆☆☆ 注:这里只是常见的自动化测试,并不全部罗列。 1.单元自动化测试 其中Java…

嵌入式硬件系统的基本组成

嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心,主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼(Von Neumann&…

前后端分离实现博客系统

文章目录 博客系统前言1. 前端1.1 登陆页面1.2 博客列表页面1.3 博客详情页面1.4 博客编辑页面 2. 后端2.1 项目部署2.1.1 创建maven项目2.1.2 引入依赖2.1.3 创建目录结构2.1.4 部署程序 2.2 逻辑设计2.2.1 数据库设计2.2.2 实体类设计2.2.3 Dao层设计2.2.3.1 BlogDao 2.2.4 D…

qt添加图标

1.添加资源 选择QtWidgetsApp.qrc文件打开 添加图标文件路径 添加图标文件 2.按钮添加图标 图标路径为:/res/res/swicth.jpg (1)代码设置图标 ui.pushButton_OPen->setIcon(QIcon(":/res/res/swicth.jpg")); (2)属…

apple pencil到底值不值得买?好用的iPad电容笔

随着ipad平板型号版本的不断更新,其的功能越来越多,现在它的性能已经可以和笔记本电脑相媲美了。而现在,随着技术的进步,IPAD已经不再是单纯的娱乐,而是一种功能强大的学习、绘画、工作等等。要增加生产效率&#xff0…

数据科学、统计学、商业分析

数据科学、统计学、商业分析是在各方面有着不同的侧重和方向的领域。 1.专业技能 数据科学(Data Science):数据科学涉及从大量数据中提取有价值的信息、模式和洞察力的领域。它使用多种技术和领域知识,如统计学、机器学习、数据库…

【数据结构与算法】归并排序

归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而…

前端面试的性能优化部分(1)每篇10题

1. 懒加载的概念 懒加载(Lazy Loading)是一种优化技术,它用于延迟加载页面资源,只在需要时才加载特定的内容,而不是在页面初始加载时一次性加载所有资源。懒加载的目的是提高页面加载速度和性能,尤其对于单…

React之路由

React之路由 背景: react: 18.2.0 路由:react-router-dom: 6.14.2 1、路由表配置 src下新建router/index.ts import React, { lazy } from react import { Navigate } from react-router-dom import Layout from /layout/Index import { JSX } from rea…

#P1007. [NOIP2007提高组] 矩阵取数游戏

题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mnm 的矩阵,矩阵中的每个元素 a_{i,j}ai,j​ 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素,共 nn 个。经过 mm 次后取完矩阵内所有元素&…

stm32内存杂记

从上图中可以看出SRAM空间用来存放:1.各个文件中声明和定义的全局变量、静态数据和常量;2.未初始化的全局变量;3.HEAP区;4.STACK区 这是在.map文件中,双击工程target打开 堆栈是处于以0x2000xx地址处的 EQU伪代码&…

学C的第三十一天【通讯录的实现】

相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十天【自定义类型:结构体、枚举、联合】_高高的胖子的博客-CSDN博客 通讯录需求: 实现一个通讯录, 通讯录中存放保存人的信息&#xff1…

【ChatGPT】相关解读

ChatGPT 背后的“功臣”——RLHF 技术详解 Meta 发布开源可商用模型 Llama 2,实际体验效果如何? Llama 2线上试用地址:replicate.com/a16z-infr…

华为鸿蒙4本周发布:官方海报大有玄机!告别“人工智障”!

一年一度的华为开发者大会2023(HDC.Together)将于8月4日至8月6日在东莞松山湖举办。相比去年,今年的华为开发者大会足足提前了三个月,而本次大会主角之一无疑是全新国产操作系统鸿蒙4(HarmonyOS 4)。 官方之前用了三个词来形容鸿蒙…

C#文件操作从入门到精通(1)——INI文件操作

点击这里:微软官方文档查看writePrivateProfileString函数定义 常见错误: 1、中文路径写入失败,为啥? 2、文件不是全路径,只有文件名也会写入失败: 3、GetLastError怎么使用? GetLastError错误代码含义: (0)-操作成功完成。 (1)-功能错误。 (2)- 系统找不到指定的文件…

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…

C语言指针进阶-1

本篇文章带来 1. 字符指针 2. 数组指针 3. 指针数组的相关知识详细讲解! 如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力之源,让我们一起加油,一起奔跑,让我们顶峰相见!&#…

04 http连接处理(上)

基础知识&#xff1a;epoll、http报文格式、状态码和有限状态机 代码&#xff1a;对服务端处理http请求的全部流程进行简要介绍&#xff0c;然后结合代码对http类及请求接收进行详细分析。 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size)…