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()



总结


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

相关文章
|
5天前
|
移动开发 JavaScript 前端开发
精通服务器推送事件(SSE)与 Python 和 Go 实现实时数据流 🚀
服务器推送事件(SSE)是HTML5规范的一部分,允许服务器通过HTTP向客户端实时推送更新。相比WebSocket,SSE更轻量、简单,适合单向通信场景,如实时股票更新或聊天消息。它基于HTTP协议,使用`EventSource` API实现客户端监听,支持自动重连和事件追踪。虽然存在单向通信与连接数限制,但其高效性使其成为许多轻量级实时应用的理想选择。文中提供了Python和Go语言的服务器实现示例,以及HTML/JavaScript的客户端代码,帮助开发者快速集成SSE功能,提升用户体验。
|
11天前
|
网络协议 开发者 Python
Socket如何实现客户端和服务器间的通信
通过上述示例,展示了如何使用Python的Socket模块实现基本的客户端和服务器间的通信。Socket提供了一种简单且强大的方式来建立和管理网络连接,适用于各种网络编程应用。理解和掌握Socket编程,可以帮助开发者构建高效、稳定的网络应用程序。
50 10
|
23天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
2月前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
78 18
[Git] 深入理解 Git 的客户端与服务器角色
|
1月前
|
Go Python
Python中的round函数详解及使用示例
`round()`函数是Python内置的用于四舍五入数字的工具。它接受一个数字(必需)和可选的小数位数参数,返回最接近的整数或指定精度的浮点数。本文详细介绍其用法、参数及示例,涵盖基本操作、负数处理、特殊情况及应用建议,帮助你更好地理解和运用该函数。
|
13天前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
|
2月前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
63 10
|
3月前
|
安全 编译器 Linux
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
117 4
|
7天前
|
域名解析 人工智能 弹性计算
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
61 10
|
17天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
83 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评

热门文章

最新文章