网络编程——TCP网络通信

news2024/11/14 22:04:36
通信步骤:
1、连接
2、传输数据
3、关闭连接

服务端的创建流程:
1、创建服务端socket对象
socket_family:网络地址类型
    AF_INET--代表的是ipv4地址类型
socket_type:套接字类型
    SOCK_STREAM--代表的是tcp套接字
    SOCK_DGRAM--代表的是udp套接字
2、绑定自己的IP以及端口号:bind的参数必须是一个元组,该元组的元素(ip,port)
3、设置监听模式,设置最大的连接数
4、等待客户端连接——accept有两个返回值:
    1、客户端链接的套接字对象(客户端发送的消息)——conn
    2、链接的客户端地址——client
5、接收客户端数据——recv的参数是每次最多接收的最大字节
6、给客户端发送数据
7、关闭

服务端:

import socket
# 1、创建服务端socket对象
telphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2、绑定自己的ip以及端口号
telphone.bind(('127.0.0.1',10086))
# 3、设置监听模式,设置最大的连接数
telphone.listen(5)
#4、等待客户端连接
conn,client = telphone.accept()
# 5、接收客户端数据
while True:
    data = conn.recv(1024)
    # 解码
    if not data:  # 当接收不到客户端的数据的时候,就代表结束通信
        break
    print(data.decode('utf-8'))
    # 6、给客户端发送数据
    conn.send(data)
# 7、关闭
conn.close()
telphone.close()

运行该代码就是启动服务端

客服端:

import socket
# 1、创建服务端socket对象
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2、连接服务端ip和端口
phone.connect(('127.0.0.1',10086))
# 3、发送,接收数据
# 发送--要对数据进行转码--encode
while True:
    # tcp套接字不允许发送空白消息
    msg = input('输入数据(q退出)').strip()# 客户端输入的数据
    # 检测发送的消息是否为空
    if not msg:
        continue
    if msg =='q':# 当输入q的时候就结束通信
        break
    phone.send(msg.encode('utf-8'))
    # 接收数据--需要解码decode
    data = phone.recv(1024)
    #解码
    print(data.decode('utf-8'))
# 4、关闭
phone.close()

运行结果:——通信:先启动服务端,再启动客户端

客户端

服务端

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

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

相关文章

新房安装了约克VRF中央空调真的是明智的选择!

夏天越来越热,新房安装了中央空调真的是太明智了!当初装修时,考虑到家里空间大,我就决定装一个中央空调。对比了好多品牌后,朋友推荐了约克VRF中央空调。装好以后,简直惊喜不断!      强效除…

基于SpringBoot+Vue+MySQL的美食点餐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化快速发展的今天,餐饮行业也迎来了转型升级的重要机遇。传统餐饮管理方式面临效率低下、顾客体验不佳等问题。为此,开发一款基于SpringBootVueMySQL架构的美食点餐管理系统显得尤为重要。该系统旨…

【Qualcomm】高通SNPE框架简介、下载与使用

目录 一 高通SNPE框架 1 SNPE简介 2 QNN与SNPE 3 Capabilities 4 工作流程 二 SNPE的安装与使用 1 下载 2 Setup 3 SNPE的使用概述 一 高通SNPE框架 1 SNPE简介 SNPE(Snapdragon Neural Processing Engine),是高通公司推出的面向移…

Leetcode尊享面试100题-252.会议室

给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。 示例 1: 输入:intervals [[0,30],[5,10],[15,20]] 输出&#xff…

记录Mac编译Android源码踩过的坑

学习Android源码,如果电脑配置还不错,最好还是下载一套源码,经过编译后导入到Android Studio中来学习,这样会更加的直观,代码之间的跳转查看会更加方便。因此,笔者决定下载并编译一套源码,以利于…

【C++算法】链表

知识总结 常用技术: 1.画图!!——>直观形象便于理解 2.引入虚拟”头结点“ 便于处理边界情况方便对链表操作 3.不要吝啬空间,大胆定义变量 4.快慢双指针——判环、找链表中环的入口、找链表中倒数第n个节点 链表中的常用…

电力领域大模型

2023年12月,arXiv预印本平台发表了一篇题为"Large Foundation Models for Power Systems"的研究论文。该文系统探讨了大型基础模型如大型语言模型(LLMs)在电力系统建模和运行中的应用前景。研究重点关注了大型基础模型在最优潮流计…

php+mysql安装

1.卸载mysql 没启动不停止 2.下载 3.解压 4.点击安装 5.出现成功 端口占用修改 修改端口89或者87 可视化扩展 修改后重启 开启扩展

consul注册中心与容器自动发现实战

consul简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等&#xff0…

springboot快速开发平台使用达梦数据库

1.首先来到DM管理工具 大致流程是:创建表空间(用于给新建的用户使用)-》创建用户(绑定表空间) 文件位置 2.创建用户 来到所属角色页面,第一个权限管理员一定要勾上,其他的看情况 3.来到DM数…

9.24每日作业

1> 思维导图 2> 将昨天的My_string类中的所有能重载的运算符全部进行重载 、[] 、>、、>) 3> 仿照stack类实现my_stack,实现一个栈的操作 text.h #ifndef LIST_H #define LIST_H #include <iostream> #include <string.h>using namespace std;…

Java项目: 基于SpringBoot+mybatis+maven医疗病历交互系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医疗病历交互系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

力扣 简单 206.反转链表

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;双指针 在遍历链表时&#xff0c;将当前节点的 next 改为指向前一个节点。由于节点没有引用其前一个节点&#xff0c;因此必须事先存储其前一个节点。在更改引用之前&#xff0c;还需要存储后一个节点。最后返回新的头引…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》&#xff0c;2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W&#xff0c;而私营单位就业人员平均月薪只有5.7K左右。 图源&#xff1a;…

1. 值、类型与运算符

在计算机的世界里&#xff0c;只有数据。你可以读取数据、修改数据、创建新数据&#xff0c;但不能提及非数据的内容。所有这些数据都存储为长位序列&#xff0c;因此本质上是相似的。 位&#xff08;比特&#xff09;是任何类型的二值事物&#xff0c;通常被描述为0和1。在计算…

Maya学习笔记:软选择

文章目录 打开软选择调整软选择范围衰减模式 软选择可以很好的进行渐变修改 打开软选择 方法1&#xff1a; 进入点线面模式&#xff0c;按B键进入软选择模式&#xff0c;再按B取消 方法2&#xff1a;双击左侧的选择按钮打开选择面板&#xff0c;勾选软选择 调整软选择范围 …

hadoop大数据平台操作笔记(上)

Hadoop介绍 Hadoop是一个开源的分布式系统框架&#xff0c;专为处理和分析大规模数据而设计。它由Apache基金会开发&#xff0c;并通过其高可靠性、高扩展性、高效性和高容错性等特性&#xff0c;在大数据领域发挥着重要作用。以下是对Hadoop的详细解释及其用途的概述&#xf…

分享6个icon在线生成网站,支持AI生成

在这个数字化的时代&#xff0c;创意和视觉标识在产品推广中可谓是愈发重要。提到图标&#xff0c;我们就不能不聊聊“Icon”这个小家伙。它不仅仅是个简单的视觉元素&#xff0c;简直是品牌信息的超级传递者。因此&#xff0c;图标生成器成了设计界的“万金油”&#xff0c;帮…

【赵渝强老师】K8s的DaemonSets控制器

DaemonSet控制器相当于在节点上启动了一个守护进程。通过使用DaemonSet可以确保一个Pod的副本运行在 Node节点上。如果有新的Node节点加入集群&#xff0c;DaemonSet也会自动给新加入的节点增加一个Pod的副本&#xff1b;反之&#xff0c;当有Node节点从集群中移除时&#xff0…

1.4 边界值分析法

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 定义2 选取3 具体步骤4 案例分析 本篇文章参考黑马程序员 前言 边界值分析法是一种广泛应用于软件测试中的技术&#xff0c;旨在识别输入值范围内的潜在缺陷。本文将详细探讨…