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



总结


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

相关文章
|
2天前
|
安全 网络协议 网络安全
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
4 0
|
2天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
5 0
|
2天前
|
算法 Python
我们需要一个简单的Python脚本来作为示例。假设我们有一个名为`hello_world.py`的脚本,
我们需要一个简单的Python脚本来作为示例。假设我们有一个名为`hello_world.py`的脚本,
7 0
|
2天前
|
Unix Shell Python
Python代码示例标准输出与标准错误输出
Python代码示例标准输出与标准错误输出
5 0
|
2天前
|
SQL Java C++
Python代码示例简单的print()函数使用
Python代码示例简单的print()函数使用
4 0
|
2天前
|
Unix Python
Python代码示例:使用`syslog`模块进行日志记录
Python代码示例:使用`syslog`模块进行日志记录
7 0
|
5天前
|
存储 关系型数据库 数据库
给阿里云的建议和意见 一个云服务器架构是否可行
摘要(Markdown格式): 在修复阿里云服务器IPv4设置错误时遇到困难,导致服务器远程登录失败及外网访问受阻,耗时三天解决。建议阿里云更新文档,确保设置指导与实际情况一致,例如只需在路由表添加条目关联IPv4。此外,建议优化帮助页面,如采用折叠式设计减少干扰。服务器主要任务是数据分析、存储和分发,文中提出简化服务器框架,消除硬件软件复杂配置,利于初学者和独立开发者快速上手,降低时间成本。该设计旨在减少无用组件,节省资源,同时降低云服务商的人力和支持成本。期望云服务商考虑此类架构创新。目前未知是否有类似产品,期待业界反馈。
214 0
给阿里云的建议和意见 一个云服务器架构是否可行
|
7天前
|
存储 编解码 网络协议
阿里云服务器计算型和通用型四代云服务器实例区别及选择参考
目前阿里云在售的云服务器中,计算型和通用型实例规格都包含了第5代、第6代、第7代和最新第八代倚天云服务器产品,例如计算型实例中有c5、c6、c7、c8y实例,而通用型实例有g5、g6、g7、g8y等实例,有的新手用户并不清楚这四代产品之间的差别,本文为大家展示这四代云服务器实例在规格、CPU(核)、内存(G)、计算、存储、内存以及不同配置的指标数据等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考和选择。
阿里云服务器计算型和通用型四代云服务器实例区别及选择参考
|
3天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
4天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得