Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】

Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】

1. TCP/IP协议简介

  • TCP: 面向连接的传输控制协议
  • IP: 网际协议,负责把数据从一个网络节点传送到另一个网络节点。

TCP/IP 协议是互联网的基础协议,是互联网最重要的基础设施之一。

2. Python中的 socket 套接字

Python 中的 socket 模块提供了对网络编程中常用的一些套接字操作的封装。

使用套接字进行网络编程的一般步骤

  • 创建 socket 套接字对象
  • 绑定 IP 地址和端口号(仅服务端需要)
  • 监听客户端连接请求(仅服务端需要)
  • 接收客户端请求并响应(仅服务端需要)
  • 连接服务端并发送数据(仅客户端需要)
  • 接收服务端发送的数据(仅客户端需要)

2.1 创建 socket对象

import socket

# TCP Client
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# TCP Server
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

socket.AF_INET 使用 IPv4 进行通信,socket.SOCK_STREAM 指定使用 TCP 进行通信。

2.2 绑定服务端IP地址和端口号

# 绑定 IP 地址和端口号
server_socket.bind(('localhost', 8000))

2.3 监听客户端连接请求

# 开始监听
server_socket.listen()

# 接受客户端连接
conn, addr = server_socket.accept()

2.4 接收客户端请求并响应

# 接收客户端请求
data = conn.recv(1024)

# 响应客户端请求
conn.sendall(data)

2.5 连接服务端并发送数据

# 建立连接
client_socket.connect(('localhost', 8000))

# 发送数据
client_socket.sendall(b'Hello, world!')

# 接收数据
data = client_socket.recv(1024)

# 解码数据并打印
print(data.decode())

3. 示例:创建 TCP 客户端和服务端

3.1 创建 TCP 服务端

import socket

def tcp_server():
    # 创建 socket 对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 绑定服务器地址和端口号
    server_socket.bind(('localhost', 8000))

    # 开始监听
    server_socket.listen()

    print('服务器已启动,等待客户端连接...')
    while True:
        # 接受客户端连接请求
        conn, addr = server_socket.accept()
        print('客户端已连接', addr)

        # 接收客户端请求并响应
        data = conn.recv(1024)
        conn.sendall(data)

        # 关闭连接
        conn.close()

if __name__ == '__main__':
    tcp_server()

3.2 创建 TCP 客户端

import socket

def tcp_client():
    # 创建 socket 对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 建立连接
    client_socket.connect(('localhost', 8000))

    # 发送数据
    client_socket.sendall(b'Hello, world!')

    # 接收数据
    data = client_socket.recv(1024)

    # 解码数据并打印
    print(data.decode())

    # 关闭连接
    client_socket.close()

if __name__ == '__main__':
    tcp_client()

以上示例实现了一个基本的 TCP 服务端和客户端连接、发送和接收数据的功能,代码简洁,易于理解。可以用于开发网络数据传输、通信或者数据采集等任何应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】 - Python技术站

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

相关文章

  • iOS13.6Beta3怎么升级 iOS13.6Beta3更新内容及升级方法

    iOS 13.6 Beta 3 升级攻略 iOS 13.6 Beta 3 是苹果公司最新的测试版操作系统,本文将详细介绍如何升级到 iOS 13.6 Beta 3,并提供一些示例说明。 升级前准备 在开始升级之前,请确保完成以下准备工作: 备份数据:升级过程中可能会出现意外情况,因此建议在升级之前备份重要的数据。你可以使用 iCloud 或 iTunes 进…

    other 2023年7月27日
    00
  • 关于android:如何在java中将rgb颜色转换为int

    关于Android: 如何在Java中将RGB颜色转换为int 在Android开发中,我们经常需要将RGB颜色转换为int类型。本攻略将详细介绍如何在Java中实现这一转换,并提供两个示例。 方法1:使用Color类的方法 Android提供了一个Color类,其中的rgb可以将RGB颜色转换为int类型。以下是具体步骤: 导入Color类。在Java文件…

    other 2023年5月9日
    00
  • 正则表达式教程之匹配单个字符详解

    当然!下面是关于\”正则表达式教程之匹配单个字符详解\”的完整攻略: 正则表达式教程之匹配单个字符详解 正则表达式是一种强大的模式匹配工具,用于在文本中查找和匹配特定的模式。在正则表达式中,我们可以使用不同的元字符来匹配单个字符。下面是一些常用的元字符及其含义: .:匹配任意单个字符,除了换行符。 \\w:匹配任意字母、数字或下划线字符。 \\d:匹配任意数…

    other 2023年8月19日
    00
  • python中的super如何使用

    当在子类中定义一个方法时,如果该方法与父类中的同名方法存在,子类方法会覆盖(重写)父类方法。然而,在某些情况下,在子类中需要调用父类的方法,这时就可以使用 super() 函数来实现。 super() 指的是父类对象,它可以通过子类对象来访问。 super() 的使用方法: super([type[, object-or-type]]) 其中,type 表示…

    other 2023年6月27日
    00
  • Android中ADB命令用法大结局

    Android中ADB命令用法大结局 ADB(Android Debug Bridge)是Android开发工具包(SDK)中的一个命令行工具,用于与连接的Android设备进行通信和调试。以下是ADB的常见用法及示例说明: 安装应用程序: adb install app.apk 该命令用于将应用程序安装到连接的Android设备上。 卸载应用程序: adb…

    other 2023年10月13日
    00
  • android 禁止第三方apk安装和卸载的方法详解

    以下是禁止第三方APK安装和卸载的方法的完整攻略: 禁止第三方APK安装 在AndroidManifest.xml文件中添加权限声明: xml <uses-permission android:name=\”android.permission.INSTALL_PACKAGES\” tools:node=\”remove\” /> 在Androi…

    other 2023年10月14日
    00
  • ubuntugrep命令

    以下是Ubuntu grep命令的完整攻略,包括步骤、示例和注意事项: Ubuntu grep命令攻略 grep命令是一种在Linux和Unix系统中用于搜索文本的命令。它可以搜索文件中的指定文本,并输出包含该文本的行。以下是详细的攻略: 步骤 以下是使用grep命令的步骤: 打开终端。 在Ubuntu系统中,可以使用Ctrl+Alt+T快捷键打开终端。 输…

    other 2023年5月7日
    00
  • 如何检查Mac电脑中有32位元软体 macOS Catalina升级前检查32位元软件方法

    如何检查Mac电脑中有32位元软体 在升级到macOS Catalina之前,你可以通过以下步骤检查你的Mac电脑中是否存在32位元软件。macOS Catalina不再支持32位元软件,因此在升级之前,你需要确保所有的软件都是64位元的。 步骤一:打开“关于本机” 首先,你需要打开“关于本机”窗口,以查看你的Mac电脑的系统信息。 点击屏幕左上角的苹果图标…

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