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天前
|
机器学习/深度学习 人工智能 算法
机械视觉:原理、应用及Python代码示例
机械视觉:原理、应用及Python代码示例
|
19天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
23天前
|
存储 SQL 安全
什么是传统的客户端服务器模式架构
什么是传统的客户端服务器模式架构
23 0
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能:原理、应用与Python代码示例
人工智能:原理、应用与Python代码示例
|
1天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之我需要在MaxCompute客户端添加Python第三方包,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
11 3
|
7天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
13 0
|
22天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
23天前
|
网络协议 Python
python中TCP回声服务器与客户端示例
【4月更文挑战第7天】本示例展示了TCP回声服务器和客户端的工作流程。服务器监听特定端口,接收客户端连接请求,接收数据并回显。客户端连接服务器,发送数据并接收回显。代码示例用Python实现,包括服务器的`socket.bind()`, `socket.listen()`, `socket.accept()`和客户端的`socket.connect()`, `socket.sendall()`, `socket.recv()`。运行示例时,先启动服务器再启动客户端,可观察TCP连接和数据传输过程。了解这些基础对于构建网络应用至关重要。
|
1天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver