python中socket详解使用教程(结尾有案列)

这篇具有很好参考价值的文章主要介绍了python中socket详解使用教程(结尾有案列)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

socket 是 Python 中用于网络通信的一个标准库。它提供了创建网络套接字并进行网络通信的接口。下面我会详细解释 Python 中 socket 的基本概念和使用方法。

简单列程,在文章后面,可以自行翻阅

基本概念

  • 套接字(Socket):套接字是计算机之间进行通信的一种约定或端点,是不同主机间进程进行通信的端点。

  • TCP 和 UDP

    • TCP(传输控制协议):面向连接的、可靠的、基于字节流的传输层通信协议。
    • UDP(用户数据报协议):无连接的、不可靠的、基于数据报的传输层通信协议。

创建套接字

在 Python 中,使用 socket 模块创建套接字的基本语法如下:

import socket  
  
# 创建一个 TCP 套接字  
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  
# 创建一个 UDP 套接字  
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

其中:

  • socket.AF_INET 表示使用 IPv4 地址。
  • socket.SOCK_STREAM 表示使用 TCP 协议。
  • socket.SOCK_DGRAM 表示使用 UDP 协议。

绑定地址和端口

对于服务器端套接字,通常需要绑定到一个特定的地址和端口上:

tcp_socket.bind(('localhost', 12345))

监听连接(仅适用于 TCP)

对于 TCP 服务器,需要监听连接:

tcp_socket.listen(5)  # 最多挂起 5 个连接

接受连接(仅适用于 TCP)

服务器可以使用 accept 方法接受客户端的连接请求:

client_socket, client_address = tcp_socket.accept()

这将返回一个包含新套接字和客户端地址的元组。新套接字用于与客户端通信。

连接服务器(仅适用于 TCP)

对于 TCP 客户端,需要连接到服务器:

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
client_socket.connect(('server_address', port))

发送和接收数据

  • 发送数据

对于 TCP,使用 send 或 sendall 方法:

tcp_socket.send(b'Hello, server!')

对于 UDP,使用 sendto 方法:

udp_socket.sendto(b'Hello, server!', ('server_address', port))
  • 接收数据

对于 TCP,使用 recv 方法:

data = tcp_socket.recv(1024)  # 最多接收 1024 字节的数据

对于 UDP,使用 recvfrom 方法:

data, server_address = udp_socket.recvfrom(1024)

关闭套接字

使用 close 方法关闭套接字:

socket.close()

TCP示例

TCP 服务器示例
import socket  
  
def start_tcp_server():  
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
    server_socket.bind(('localhost', 12345))  
    server_socket.listen(5)  
    print('Server started, listening on port 12345...')  
      
    while True:  
        client_socket, client_address = server_socket.accept()  
        print(f'Connection from {client_address}')  
        data = client_socket.recv(1024)  
        print(f'Received data: {data.decode()}')  
        client_socket.send(b'Hello, client!')  
        client_socket.close()  
  
if __name__ == '__main__':  
    start_tcp_server()
TCP 客户端示例
import socket  
  
def start_tcp_client():  
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
    client_socket.connect(('localhost', 12345))  
    client_socket.send(b'Hello, server!')  
    data = client_socket.recv(1024)  
    print(f'Received data from server: {data.decode()}')  
    client_socket.close()  
  
if __name__ == '__main__':  
    start_tcp_client()


UDP服务器示例

UDP 服务器示例

import socket  
  
def start_udp_server():  
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 创建UDP套接字  
    server_socket.bind(('localhost', 12345))  # 绑定地址和端口  
    print('UDP Server started, listening on port 12345...')  
  
    while True:  
        data, client_address = server_socket.recvfrom(1024)  # 接收数据  
        print(f'Received data from {client_address}: {data.decode()}')  
        server_socket.sendto(b'Hello, client!', client_address)  # 发送响应  
  
if __name__ == '__main__':  
    start_udp_server()

UDP 客户端示例 

import socket  
  
def start_udp_client():  
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 创建UDP套接字  
    message = b'Hello, server!'  
    server_address = ('localhost', 12345)  
  
    client_socket.sendto(message, server_address)  # 发送数据  
    data, server_address = client_socket.recvfrom(1024)  # 接收响应  
    print(f'Received data from server: {data.decode()}')  
  
    client_socket.close()  # 关闭套接字  
  
if __name__ == '__main__':  
    start_udp_client()

示例解释

UDP服务器

  • 创建一个UDP套接字。
  • 绑定到本地地址和端口。
  • 进入一个无限循环,接收来自客户端的数据。
  • 对于接收到的每条消息,打印其内容,并发送一个响应给客户端。

UDP客户端文章来源地址https://www.toymoban.com/news/detail-858962.html

  • 创建一个UDP套接字。
  • 准备要发送的消息。
  • 发送消息到服务器的地址和端口。
  • 等待服务器的响应,并打印其内容。
  • 关闭套接字。

到了这里,关于python中socket详解使用教程(结尾有案列)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )

    Socket 套接字 是一种 进程之间的 通信机制 , 通过套接字可以在 不同的进程之间 进行数据交换 ; 在 网络编程 中 , Socket 套接字 主要用于 客户端 与 服务器 之间的 通信 , 大部分 网络相关的应用程序 , 都使用到了 Socket 套接字技术 ; 套接字有两种类型 : 流套接字 : 提供了一个可

    2024年02月15日
    浏览(153)
  • socket概述 python中如何使用TCP/UDP协议实现通信-教程

    很多编程语言中,都 使用scoket套接字实现网络通信。 Socket是对TCP/IP协议的封装,Socket本身就是一个调用接口(API),方便程序员用Socket使用TCP/IP协议簇,实现网络通信。 不同编程语言,shiyongSocket通信的语法有所区别,但基本原理类型相似。 它的两种方式,分别是TCP和UDP协

    2024年02月13日
    浏览(42)
  • python 学习之 socket 库的基本使用(网络编程-套接字)

    目录 一、关于 socket 的介绍 二、创建套接字对象(Socket 的实例化) 三、套接字对象方法(Socket 常用函数) 1、bind 函数 2、listen 函数 3、accept 函数 4、connect 与 connect_ex 函数 5、send 、 sendall 、sendto 函数 6、recv 与 recvfrom 函数 7、close 函数 三、简单的服务端和客户端示例 四、

    2024年02月20日
    浏览(63)
  • Docker环境部署Hadoop并使用docker构建spark运行案列(全网最详细教程)

    Docker部署hadoop 和使用docker构建spark运行环境(全网最详细教程) 首先查看版本环境(docker中没有下载docker和docker-compose的可以看我上一篇博客 Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面) 查看docker和docker-compose版本: OK,环境没问题,

    2024年02月03日
    浏览(43)
  • 【Java基础教程】(四十七)网络编程篇:网络通讯概念,TCP、UDP协议,Socket与ServerSocket类使用实践与应用场景~

    了解多线程与网络编程的操作关系; 了解网络程序开发的主要模式; 了解 TCP 程序的基本实现; 在Java中,网络编程的核心意义是实现不同电脑主机之间的数据交互。Java采用了一种简化的概念,将这个过程进一步抽象为JVM(Java虚拟机)进程之间的通信。可以在同一台电脑上

    2024年02月15日
    浏览(67)
  • Java 网络编程 —— Socket 详解

    在【客户端/服务端】的通信模式中,客户端需要主动构造与服务器连接的 Socket,构造方法有以下几种重载形式: 除了第一个不带参数的构造方法,其他构造方法都会试图建立与服务器的连接,一旦连接成功,就返回 Socket 对象,否则抛出异常 1. 设定等待建立连接的超时时间

    2024年02月01日
    浏览(36)
  • 网络编程—Socket套接字详解

    目录 一、网络编程 1.1、为什么需要网络编程? 1.2、什么是网络编程 1.3、发送端和接收端 ​编辑1.4、请求和响应 ​编辑1.5、客户端和服务端  二、Socket套接字  2.1、概念 2.2、分类  2.2.1、流套接字  2.2.2、数据报套接字  2.2.3、原始套接字  2.3、Socket编程注意事项  1.1、为什

    2024年02月16日
    浏览(54)
  • 网络socket服务器开发几种并发模型详解

    目录 一、socket创建流程。 二、I/O多路复用 三、服务器开发常见的并发模型 1、模型一:单线程——无IO复用 1.1 模型分析 2、模型二:单线程accept + 多线程读写业务(无IO复用) 模型分析 3、模型三:单线程多路IO复用 模型分析  4、模型四:单线程多路IO复用 + 多线程业务工作

    2024年02月11日
    浏览(38)
  • Python Socket网络编程

    目录 Socket概念 Python Socket编程 发送接收缓冲  消息格式定义  Socket套接字,一种独立于协议的网络编程接口,就是对网络中不同主机上的应用进程之间进行双向通信的端点。 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket)。 IP层

    2024年02月07日
    浏览(45)
  • Socket 传情:用 Python 编织 TCP 网络

    项目 描述 Python 官方文档 https://docs.python.org/zh-cn/3/ 搜索引擎 Google 、Bing 项目 描述 操作系统 Windows 10 专业版 PyCharm 2023.1 (Professional Edition) Python 3.10.6 服务器端 创建一个监听套接字对象,指定地址族( IPV4 或 IPV6 )和套接字类型( TCP 套接字 或 UDP 套接字 )。 通过使用 bind()

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包