Python实现TCP和UDP通信

一:TCP

在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例,展示了如何使用Python的socket模块创建一个TCP客户端和服务器。

 

TCP服务器

import socket def start_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 12345)) # 绑定IP地址和端口号 server_socket.listen(1) # 开始监听,参数是队列大小 print("Server is listening...") while True: client_socket, addr = server_socket.accept() # 接受客户端连接请求 print(f"Connection from {addr} has been established!") # 在这里,你可以发送和接收数据 client_socket.send(b"Hello from server!") # 发送数据到客户端 data = client_socket.recv(1024) # 从客户端接收数据 print(f"Received data: {data.decode()}") client_socket.close() # 关闭连接 if __name__ == "__main__": start_server()

TCP客户端

import socket  

  

def start_client():  

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    client_socket.connect(('localhost', 12345)) # 连接到服务器  

  

    data = client_socket.recv(1024) # 从服务器接收数据  

    print(f"Received data: {data.decode()}")  

  

    client_socket.send(b"Hello from client!") # 发送数据到服务器  

    client_socket.close() # 关闭连接  

  

if __name__ == "__main__":  

    start_client()

在这个示例中,服务器首先创建一个socket,然后绑定到一个本地IP地址和一个端口号,并开始监听连接请求。当一个客户端尝试连接到服务器时,服务器接受连接请求,然后发送一条消息给客户端。客户端则连接到服务器,接收服务器的消息,然后发送一条消息回服务器。

 

二:UDP

UDP服务器

import socket  

  

def start_udp_server():  

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP socket对象  

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

  

    while True:  

        data, addr = server_socket.recvfrom(1024) # 接收客户端发送的数据,最大长度为1024字节  

        print(f"Received data from {addr}")  

        print(f"Data: {data.decode()}")  

  

if __name__ == "__main__":  

    start_udp_server()

 

UDP客户端

import socket  

  

def start_udp_client():  

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP socket对象  

  

    client_socket.sendto(b"Hello from client!", ('localhost', 12345)) # 发送数据到服务器  

    data, addr = client_socket.recvfrom(1024) # 接收服务器返回的数据,最大长度为1024字节  

    print(f"Received data from {addr}")  

    print(f"Data: {data.decode()}")  

  

if __name__ == "__main__":  

    start_udp_client()

在这个示例中,服务器首先创建一个UDP socket对象,然后绑定到一个本地IP地址和一个端口号。当客户端尝试发送数据到服务器时,服务器通过recvfrom()方法接收数据,然后打印出来。客户端则通过sendto()方法发送数据到服务器,然后等待服务器的响应,通过recvfrom()方法接收服务器的响应数据,然后打印出来。

你可能感兴趣的:(python开发,python)