Python socket如何实现服务端和客户端数据传输(TCP)

yizhihongxing

Python socket是一个可以实现网络应用的库,可以用来实现数据传输,包括TCP和UDP协议。下面将详细讲解如何使用Python socket实现TCP协议的服务端和客户端数据传输。

实现TCP协议的服务端和客户端数据传输

TCP服务端

  1. 导入socket库
import socket
  1. 创建socket对象并指定协议
serv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • socket.AF_INET:指定ipv4协议
  • socket.SOCK_STREAM:指定TCP协议

  • 绑定IP和端口

serv_sock.bind(('127.0.0.1', 8000))
  • 127.0.0.1:本地IP地址
  • 8000:自定义的端口号

  • 开始监听,并设置最大连接数

serv_sock.listen(5)
  • 5:最大连接数

  • 等待客户端连接,并返回一个socket对象和客户端地址信息

while True:
    conn_sock, conn_addr = serv_sock.accept()
  1. 接收客户端发送的数据
data = conn_sock.recv(1024)
  • 1024:每次最大接收数据量

  • 发送数据给客户端

conn_sock.send(b"Hello World!")
  1. 关闭socket对象
conn_sock.close()
serv_sock.close()

TCP客户端

  1. 导入socket库
import socket
  1. 创建socket对象并指定协议
client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • socket.AF_INET:指定ipv4协议
  • socket.SOCK_STREAM:指定TCP协议

  • 连接服务端地址

client_sock.connect(('127.0.0.1', 8000))
  • 127.0.0.1:服务端IP地址
  • 8000:服务端自定义的端口号

  • 发送数据给服务端

client_sock.send(b"Hello World!")
  1. 接收服务端发送的数据
data = client_sock.recv(1024)
  • 1024:每次最大接收数据量

  • 关闭socket对象

client_sock.close()

示例说明

下面给出两条示例说明:

示例1:服务端和客户端通过Python socket实现简单聊天发送消息

服务端代码:

import socket

serv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv_sock.bind(('127.0.0.1', 8000))
serv_sock.listen(5)

while True:
    conn_sock, conn_addr = serv_sock.accept()
    print('Connected by', conn_addr)
    while True:
        data = conn_sock.recv(1024)
        if not data: break
        print('[Client]', data.decode('utf-8'))
        msg = input('[Server] ')
        conn_sock.send(msg.encode('utf-8'))
    conn_sock.close()
serv_sock.close()

客户端代码:

import socket

client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.connect(('127.0.0.1', 8000))

while True:
    msg = input('[Client] ')
    client_sock.send(msg.encode('utf-8'))
    data = client_sock.recv(1024)
    print('[Server]', data.decode('utf-8'))

client_sock.close()

示例2:通过Python socket实现文件传输

服务端代码:

import socket

serv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv_sock.bind(('127.0.0.1', 8000))
serv_sock.listen(5)

while True:
    conn_sock, conn_addr = serv_sock.accept()
    print('Connected by', conn_addr)
    with open('receive.txt', 'wb') as f:
        while True:
            data = conn_sock.recv(1024)
            if not data: break
            f.write(data)
    print('Finished receiving')
    conn_sock.close()
serv_sock.close()

客户端代码:

import socket

client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.connect(('127.0.0.1', 8000))

with open('send.txt', 'rb') as f:
    while True:
        data = f.read(1024)
        if not data: break
        client_sock.send(data)

print('Finished sending')
client_sock.close()

以上就是Python socket实现服务端和客户端数据传输的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python socket如何实现服务端和客户端数据传输(TCP) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • php 静态属性和静态方法区别详解

    PHP 静态属性和静态方法区别详解 1. 静态属性 静态属性是属于类的属性,不属于类的实例对象。它可以在类内部定义,并且通过self::或类名::的方式访问,而不需要实例化类。 静态属性的主要特点包括:- 所有实例对象共享同一个静态属性的值。- 静态属性可以在类内外使用,且所有实例对象和类都可以访问。- 静态属性可以在类外直接使用,通过类名::$静态属性名的…

    other 2023年6月28日
    00
  • 网易云音乐ip地址在哪看? 网易云音乐查看IP属地的技巧

    网易云音乐IP地址在哪看? 如果你想查看网易云音乐的IP地址,可以使用以下方法: 使用网络工具查找IP地址:你可以使用一些在线的网络工具来查找网易云音乐的IP地址。其中一个常用的工具是ipaddress.com。你只需要在该网站的搜索框中输入music.163.com,然后点击搜索按钮。在搜索结果中,你将看到网易云音乐的IP地址。 使用命令行工具查找IP地址…

    other 2023年7月30日
    00
  • 浅谈gulp创建完整的项目流程

    浅谈Gulp创建完整的项目流程可以分为以下几个步骤: 步骤一:安装和初始化 安装Node.js和npm 全局安装gulp:npm install gulp -g 在项目根目录下创建 package.json 文件:npm init 添加gulp依赖:npm install gulp –save-dev 步骤二:创建任务 在项目根目录下创建 gulpfile…

    other 2023年6月27日
    00
  • 强大的健身软件——Keep

    强大的健身软件——Keep的完整攻略 Keep是一款非常受欢迎的健身软件,它提供了丰富的健身课程和社区功能,帮助用户实现健身目标。本文将为您提供Keep的完整攻略,包括基本概念、使用方法、以及两个示例说明。 基本概念 Keep是一款健身软件,提供了丰富的健身课程和社区功能。用户可以通过Keep选择适合自己的健身课程,跟随教练进行训练,还可以通过社区功能与其他…

    other 2023年5月6日
    00
  • Apache+PHP+MySQL搭建PHP开发环境图文教程

    下面我将详细讲解如何搭建Apache+PHP+MySQL的PHP开发环境,包含必要的软件下载、安装和配置过程。 环境要求 要成功搭建PHP开发环境,需要满足以下软件要求: Apache HTTP服务器 PHP MySQL数据库 步骤1:下载安装Apache 在官网下载Apache的最新版本,根据自己的操作系统选择对应的安装程序,然后运行安装程序,按照步骤完成…

    other 2023年6月27日
    00
  • PHP 第三节 变量介绍

    PHP 第三节 变量介绍 在本节中,我们将详细介绍PHP中的变量。变量是用于存储和操作数据的容器。在PHP中,变量使用一个美元符号($)后跟变量名来声明和使用。 变量声明和赋值 要声明一个变量,只需使用美元符号($)后跟一个有效的变量名。变量名必须以字母或下划线开头,后面可以是字母、数字或下划线的组合。以下是一个示例: $age = 25; 在上面的示例中,…

    other 2023年8月8日
    00
  • webmvcconfigureradapter详解和过时后的替代方案

    当然,我很乐意为您提供有关“WebMvcConfigurerAdapter详解和过时后的替代方案”的完整攻略。以下是详细的步骤和两个示例: 1. WebMvcConfigurerAdapter是什么? WebMvcConfigurerAdapter是Spring MVC框架中的一个类,用于配置Spring MVC的行为。它提供了许多方法,可以用于配置拦截器、…

    other 2023年5月6日
    00
  • win10系统下耳机插前面板没有声音怎么办?解决方法

    如果在Win10系统下插入耳机到前面板,但是没有声音,可以尝试以下解决方法: 检查音频驱动程序 首先,需要检查计算机的频驱动程序是否正确安装。可以通过以下步骤检查: 任务栏上右键单击音量图标,选择“音量调节”。 在“音量调节器”窗口中,单击“备属性”。 在“设备属性”窗口中,选择“驱动”选项卡,然后单击“更新驱动程序”按钮。 驱动程序需要更新,系统会自动下载…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部