您现在的位置是:首页 > 正文

从入门到入土:基于Python采用TCP协议实现通信功能的程序

2024-02-01 04:34:03阅读 2

此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
本人博客所有文章纯属学习之用,不涉及商业利益。不合适引用,自当删除!
若被用于非法行为,与我本人无关

基于Python采用TCP协议实现通信功能的程序

代码

客户端

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#创建socket对象,选择AF_INET的目的是使用IPv4进行通信,SOCK_STREAM提供面向连接的稳定数据传输
ip=socket.gethostname()
#ip=''

port=9999

s.connect((ip,port))

while True:

    while True:
        mes = input("请输入要发送的信息:")
        if mes != "exit":
            T_mes = bytes(mes,encoding="gbk")
            s.send(T_mes)
            data=s.recv(1024)
            print(str(data,encoding="gbk"))
        else:
            break;
    if mes == "exit":
        break;
        
s.close()

服务端

import socket
import platform
import psutil

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket对象,选择AF_INET的目的是使用IPv4进行通信,SOCK_STREAM提供面向连接的稳定数据传输
ip=socket.gethostname()
#ip=''
port=9999
s.bind((ip,port))#绑定端口
s.listen(5)#设置最大连接数

while True:
    print("服务器启动,正在监听客户端连接")
    connet, addr = s.accept()  # 建立客户端连接
    while True:
        data=connet.recv(1024).decode()
        print('客户端发送内容:',data)
        if data == "show me OS info":
            os = platform.uname()
            reply01 = bytes(str(os), encoding="gbk")
            connet.send(reply01)
        else:
            if data == "show me Disk info":
                m=[]
                a = str(psutil.disk_partitions())+str(len(psutil.disk_partitions()))
                reply02 = bytes(a,encoding="gbk")
                connet.send(reply02)
            else:
                    reply00 = bytes("命令无效\n", encoding="gbk")
                    connet.send(reply00)
s.close()

运行效果

  • 首先启动服务端
    在这里插入图片描述
  • 然后启动客户端
    在这里插入图片描述
  • 可以发送指定的命令,不过需要自行编写,我这边写了一个查看OS版本和一个磁盘分区情况查询
show me OS info
show me Disk info

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 服务端也是有收到客户端发送过来的数据

end

网站文章

  • 小程序海报生成工具,可视化编辑直接生成代码使用

    开门见山工具地址 点我直达>>painter-custom-poster由于挂载在github page上,打开速度会慢一些,请耐心等待或自行解决git网速问题背景在做小程序时候,我们经常会有一个需求,需要将小程序分享到朋友圈,但是朋友圈是不允许直接分享小程序,那我们还有其他的办法解决吗?答案肯定是有的,即 canvas 生成个性化海报分享图片到朋友圈分析小程序...

    2024-02-01 04:33:50
  • 卷积和反卷积

    卷积和反卷积

    其最后得到一个34*1的张量。

    2024-02-01 04:33:44
  • LeetCode 1248. Count Number of Nice Subarrays【前缀和,哈希表;数学;滑动窗口】中等

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。

    2024-02-01 04:33:14
  • VS的release模式下,如何使断点生效

    3、连接器——调试——生成调试信息——生成调试信息(/DEBUG)1、c++——常规——调试信息格式——(程序数据库/Zi)2、c++——优化——优化——已禁用。打开项目属性,设置以下内容。

    2024-02-01 04:33:07
  • 华为2018届校招勇敢星实习生招聘笔试+面试经历

    华为2018届校招勇敢星实习生招聘笔试+面试经历

    写在前面  之前一直在忙期末,最近才歇了下来,来总结一下之前参加华为2018届勇敢星实习生笔试+面试(研发类)并顺利拿到offer的经历。   我是在微信上投的Android研发实习生岗,很快就收到...

    2024-02-01 04:33:00
  • C++ 网络编程 TCP 用select实现的并发 异步

    C++ 网络编程 TCP 用select实现的并发 异步

    https://blog.csdn.net/xiyangxiaoguo/article/details/107179169 上一篇采用的是建立新的线程的方法去处理一个新的客户端到服务器的TCP连接,对...

    2024-02-01 04:32:31
  • HTML & CSS 学习总结

    HTML & CSS 学习总结

    一.HTML1.HTML是什么?HTML(超文本标记语言) 是一种用于创建网页结构和内容的标记语言。它是构建互联网世界的基础,被用于描述网页的结构和语义。HTML使用 标签(tag) 来定义文档中的各...

    2024-02-01 04:32:14
  • 时间复杂度 和空间复杂度的计算

    一、 算法的时间复杂度定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数...

    2024-02-01 04:32:09
  • Java语言----二叉树 最新发布

    Java语言----二叉树 最新发布

    二叉树详细讲解,以及Java实现代码

    2024-02-01 04:31:41
  • Error: Flutter plugin not installed; this adds Flutter specific functionality. - Flutter

    Error: Flutter plugin not installed; this adds Flutter specific functionality. - Flutter

    安装 Flutter 的时候在 Android Studio IED 处遇到了一些小的插件缺失问题,具体异常提示如下: [!] Android Studio (version 3.4) ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not insta...

    2024-02-01 04:31:36