首页 > 编程语言 >Python基于Socket编写TcpServer通信基本框架

Python基于Socket编写TcpServer通信基本框架

时间:2023-06-23 16:01:08浏览次数:46  
标签:socket Python TcpServer server 地址 client 客户端 连接 Socket

如下主要是实现单客户端连接通信,如下为Socket模块的常用属性和方法介绍。

如要实现多客户端连接,请使用threading模块的多线程技术实现。

属性:
• socket.AF_INET:IPv4 地址族。
• socket.AF_INET6:IPv6 地址族。
• socket.SOCK_STREAM:TCP 协议类型。
• socket.SOCK_DGRAM:UDP 协议类型。
方法:
• socket.socket():创建一个新的 socket 对象。
• socket.bind():将 socket 绑定到指定地址和端口。
• socket.listen():使 socket 监听传入的连接。
• socket.accept():接受传入的连接并返回新的套接字对象和地址。
• socket.connect():建立一个连接到指定的地址和端口。
• socket.recv():接收指定数量的数据。
• socket.send():发送指定数量的数据。
• socket.close():关闭套接字连接。

服务器端代码如下:

import socket

HOST = '127.0.0.1'
PORT = 8888

# 创建一个新的 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定 socket 到指定地址和端口
server_socket.bind((HOST, PORT))
print('等待客户端的连接')
# 开始监听传入的连接
server_socket.listen()

# 循环处理传入的连接
while True:
    # 接受传入的连接并返回新的套接字对象和地址,server_socket.accept()值是个元组,同时赋值给了两个变量。
    client_socket, address = server_socket.accept()
    print(f"{address}已连接")
    while True:
        # 接收客户端发送的数据
        data = client_socket.recv(1024)
        # 将数据转换为字符串并输出
        print(data.decode())
        # 发送响应数据给客户端
        response = input("请输入你要发给客户端数据:")
        client_socket.send(response.encode())

        # 关闭客户端连接
    client_socket.close()
#退出服务器连接
server_socket.close()

客户端代码如下

import socket
#定义要连接的服务器IP端口信息
server_ip = ('127.0.0.1',8888)
#定义使用TCP/IP
client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接到服务器。
client_socket.connect(server_ip)
#通过死循环实现连续交互
while True :
    #发送消息给服务器
    mas = input('请输入你要发送的消息:')
    client_socket.send(mas.encode())
    #接收来自服务器的消息
    data = client_socket.recv(1024)
    print(f"{data.decode()}")

client_socket.close()

可使用pyinstaller模块打包成exe程序给windwos运行使用,实现远程执行powershell命令。建议在windwos上的pycharm打包打包,否则打包出来的exe程序会有兼容性问题。

dengpeng@MacBook-Pro-2 dengpeng % pyinstaller --onefile Linux/SSH_Client.py 

标签:socket,Python,TcpServer,server,地址,client,客户端,连接,Socket
From: https://blog.51cto.com/dengpeng2025/6538222

相关文章

  • gRPC学习记录--python
    gRPC学习记录基于:gRPC官方文档中文版v1.0目录gRPC学习记录gRPC是什么?应用在准备:安装安装Git安装gRPCPython使用protocolbuffersProtocolbuffers版本HelloWorfgRPC!定义服务生成gRPC代码写一个服务器服务实现服务端实现写一个客户端连接服务调用RPC试一下!gRPC......
  • Ubuntu-Python创建虚拟环境
    要在Ubuntu上使用VSCode为Python创建一个虚拟环境,可以按照以下步骤进行:打开终端(Ctrl+Alt+T)。安装Python的虚拟环境工具(如果尚未安装):sudoaptinstallpython3-venv在终端中进入您希望创建虚拟环境的目录:cd/path/to/directory请将/path/to/direct......
  • Python 设计一个简单的计算器
    Python设计一个简单的计算器设计目标实现加减乘除及拓号优先级解析用户输入1-2*((6-3+(-5/5)*(9-2*3/3+7/3*7/4*12+10*5/5))-(-4*3)/(12-3*2))等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致......
  • NLP实战必读-基于Python的文本分析实战
    本书介绍   从新闻和演讲到社交媒体上的非正式聊天,自然语言是最丰富、利用最少的数据来源之一。它不仅源源不断地供给,总是在环境中变化和适应;它还包含传统数据源无法传达的信息。解锁自然语言的关键是通过文本分析的创造性应用。本书展示了数据科学家用应用机器学习模型构建语......
  • Python 算法之冒泡排序
    Python算法之冒泡排序冒泡排序冒泡排序算法的原理如下:(从后往前)1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一......
  • 将python程序打包为exe可执行文件方法
    将py打包为exe文件需要依赖pyinstaller第三方库-F:打包后只生成单个exe格式文件;-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;-c:默认选项,使用控制台(就是类似cmd的黑框);-w:不使用控制台;-p:添加搜索路径,让其找到对应的库;-i:改变生成程序的icon图标。1.单个py文件编......
  • Python 算法之二分查找
    Python算法之二分查找二分查找二分查找又称折半查找优点是比较次数少,查找速度快,平均性能好缺点是要求待查表为有序表,且插入删除困难折半查找方法适用于不经常变动而查找频繁的有序列表。猜数字游戏1、生成一个有序列表2、用户猜测某个数字是否在列表中代码#!/usr......
  • 密码学:凯撒密码(移位密码)原理、加密与解密(Python代码示例)
    原理凯撒密码(移位密码):是一种替换加密,明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。例如,偏移量为3位的时候:A对应D,B对应E,C对应F等当偏移量为13位的时候,凯撒密码又叫回转密码(ROT13):明文加密得到密文,密文再加密就会得到明文(因为偏移量为13位,一共......
  • Python.re正则表达式的标记
    标记方式在Python的re模块中,有以下几种标记(flags)可用于修改正则表达式的匹配行为:re.I(或re.IGNORECASE):忽略大小写匹配。例如,正则表达式[a-z]+将匹配小写字母字符串,而使用re.I标记后,它将匹配大小写混合或大写字母字符串。re.M(或re.MULTILINE):多行模式匹配。默认情况下,正......
  • Python TTS 初体验
    最近有个需求由于刚入职公司不管是读写还是听说  都有很大的问题于是正好找到一本python的书准备把他再刷一遍  但是听力也想一起练了怎么办呢 TTS 百度,讯飞,这种还要钱 不考虑了打开gayhub 搜TTS GitHub-coqui-ai/TTS:......