Python Scoket套件使用,客户端和服务器端使用示例

简介: Python Scoket套件使用,客户端和服务器端使用示例

前言


今天是周一,有点疲惫


0、Scoket模块的一些常用函数以及使用流程:

0-1、Scoket模块的一些常用函数


Python 的 socket 模块提供了与网络编程相关的基本功能。使用 socket 模块,你可以轻松地创建和操作网络套接字(sockets)以进行网络通信。下面是 socket 模块的一些常用函数和方法:


  • socket.socket():创建一个套接字对象
  • socket.bind(address):绑定套接字到一个特定的地址和端口
  • socket.listen(backlog):开始监听连接,backlog 指定等待连接的最大数量
  • socket.accept():接受客户端连接,并返回一个新的套接字对象以便在服务器和客户端之间进行通信
  • socket.connect(address):连接到指定地址和端口的服务器
  • socket.recv(bufsize):从套接字接收数据,指定缓冲区大小
  • socket.send(bytes):发送数据到套接字
  • socket.close():关闭套接字连接


使用 socket 模块,你可以创建 TCP 或 UDP 的套接字,根据需要配置套接字选项,使用不同的传输协议和端口号等等。使用 socket 模块可以构建各种网络应用程序,例如基于套接字的 Web 服务器、聊天室、文件传输程序等。


0-2、使用流程


当你需要编写一个网络应用程序时,你可能需要使用 socket 模块来完成以下操作

  • 创建套接字对象:使用 socket.socket() 函数创建一个套接字对象。在创建套接字时,你需要指定使用哪种传输协议(如 TCP 或 UDP)以及套接字的类型(如面向流的套接字或面向消息的套接字)。
  • 绑定套接字到一个地址和端口:使用 socket.bind() 函数将套接字绑定到一个特定的地址和端口。当你需要创建一个服务器应用程序时,你需要在服务器上的某个地址和端口上侦听客户端连接请求。
  • 开始监听连接:使用 socket.listen() 函数开始监听客户端连接请求。在此期间,服务器将等待客户端连接请求并在客户端连接请求到达时接受连接请求并返回一个新的套接字对象。
  • 接受客户端连接并返回新的套接字对象:使用 socket.accept() 函数接受客户端连接,并返回一个新的套接字对象以便在服务器和客户端之间进行通信。在此过程中,服务器将阻塞并等待客户端连接请求到达。
  • 发送和接收数据:使用 socket.send() 和 socket.recv() 函数发送和接收数据。发送数据时,你需要将数据编码为字节串(bytes)类型。接收数据时,你需要指定要接收的数据大小并将其解码为相应的格式。
  • 关闭连接:使用 socket.close() 函数关闭套接字连接。
  • 除此之外,还可以使用 socket 模块提供的其他函数和方法来控制套接字选项,设置超时时间等等。在使用 socket 模块时,需要注意处理网络异常和错误,例如连接中断、连接超时、网络故障等等。


下边为使用Socket的示例

一、服务器端

import socket
IP = ip地址
PORT = 端口号
BUFLEN = 1024
# 初始化Scoket,获取tcp/ip套接字。
listenSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 与端口进行绑定
# IP = socket.gethostname()
listenSocket.bind((IP,PORT))
# 对端口进行监听
# 5表示操作系统可以挂起的最大连接数量。
listenSocket.listen(5)
print('服务端启动成功','在',PORT,'端等待客户连接')
# 调用accept进行阻塞,之后等待客户端连接,客户端发送数据请求,服务器端接受并且处理请求。
dataSocket,addr = listenSocket.accept()
print('接收一个客户端连接:',addr)
while True:
    # 设置可以接受的最大数据值。
    recved = dataSocket.recv(BUFLEN)
    # 如果超出最大范围,则break中断。
    if not recved:
        break
    info = recved.decode()
    print('收到客户端消息',info)
    dataSocket.send(info.encode())
# 关闭阻塞,关闭套接字。
dataSocket.close()
listenSocket.close()


二、客户端

import socket
Port = 端口号
IP = ip地址
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# IP = socket.gethostname()
# 主动初始化TCP服务连接
phone.connect((IP, Port))
# 拨通电话
# 发消息
# 发送TCP数据,将string中的数据发送到连接的套接字。
phone.send('hello'.encode('utf-8'))
back_msg = phone.recv(1024)
print(back_msg)
phone.close()



总结


想念海边,想去过夏天了!

相关文章
|
27天前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
51 18
[Git] 深入理解 Git 的客户端与服务器角色
|
2月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
283 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
安全 编译器 Linux
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
92 4
|
3月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
65 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
2月前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
3月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
3月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
4月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
220 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
4月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
124 4
|
4月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
744 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。

热门文章

最新文章

推荐镜像

更多