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 服务端和客户端连接、发送和接收数据的功能,代码简洁,易于理解。可以用于开发网络数据传输、通信或者数据采集等任何应用场景。

阅读剩余 66%

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

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

相关文章

  • scroll-view滚动到底部

    scroll-view滚动到底部 简介 在移动设备上,经常需要展示一些内容,并支持滚动。而很多时候,需要滚动到底部以加载更多内容。这时,我们可以使用scroll-view组件来实现。 scroll-view是一个支持滚动的容器组件,可以嵌套其他组件。当内容超过组件的大小时,可以滚动查看其余内容。 使用scroll-view组件 scroll-view通过设置…

    其他 2023年3月28日
    00
  • 【centos】桌面安装

    【CentOS】桌面安装 CentOS(Community Enterprise Operating System)是一款基于Red Hat Enterprise Linux(RHEL)源代码的自由操作系统。CentOS的版本稳定,而且安全性高,非常适合作为服务器使用。但是默认情况下,CentOS只安装了命令行界面,没有安装桌面环境。如果你需要在CentOS…

    其他 2023年3月29日
    00
  • cd命令进入d盘文件夹

    如何使用cd命令进入D盘文件夹 在Windows操作系统中,使用cd命令可以进入指定的文件夹。下面是详细的攻略,包括两个示例说明。 1. 打开命令提示符 在Windows操作系统中,可以通过按下Win+R键,然后输入cmd并按下回车键来打开命令提示符。 2. 进入D盘 在命令提示符中,输入以下命令: D: 这个命令表示要进入D盘。 3. 进入文件夹 如果要进…

    other 2023年5月7日
    00
  • Python进阶语法之类的继承

    Python进阶语法之类的继承 什么是继承? 继承是面向对象编程中的一个重要概念,它允许一个类(子类)从另一个类(父类)获得属性和方法。子类可以像父类一样使用这些属性和方法,并且还可以根据需要添加自己的属性和方法。 在 Python 中,继承实现非常简单,只需要在子类定义的时候在括号中指定父类即可。 class Parent: def parent_meth…

    other 2023年6月26日
    00
  • 使用delphi 10.2 开发linux 上的webservice

    使用Delphi 10.2在Linux上开发WebService 随着云计算和分布式系统的兴起,Web服务已经成为了重要的技术之一。在Delphi 10.2中开发Linux上的WebService可以为我们带来许多便利,本文将介绍使用Delphi 10.2开发Linux上的WebService的基本流程。 准备工作 在开始之前,我们需要确保我们已经正确安装了…

    其他 2023年3月28日
    00
  • ppapi npapi

    ppapi与npapi:浏览器插件开发者需了解的重要概念 浏览器插件是指能够在浏览器中运行的第三方软件,常见的浏览器插件有Flash Player、Java等。浏览器插件的运行使得浏览器拥有了更多的功能和特性,具有极高的实用价值。 NPAPI NPAPI(Netscape Plug-in Application Programming Interface)是…

    其他 2023年3月28日
    00
  • Spring核心之IOC与bean超详细讲解

    当然!下面是关于\”Spring核心之IOC与Bean超详细讲解\”的完整攻略,包含两个示例说明。 … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … ..…

    other 2023年8月20日
    00
  • java应用开发之JVM运行时内存分析

    Java应用开发之JVM运行时内存分析攻略 在Java应用开发中,JVM(Java虚拟机)运行时内存分析是一项重要的技能。通过对JVM运行时内存的分析,我们可以了解应用程序的内存使用情况,发现潜在的内存泄漏问题,并进行性能优化。下面是一份详细的攻略,帮助你进行JVM运行时内存分析。 1. 使用工具 在进行JVM运行时内存分析之前,我们需要使用一些工具来帮助我…

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