欢迎访问宙启技术站
智能推送

Python中如何在main()函数中实现网络通信

发布时间:2023-12-24 12:18:38

在Python中,可以使用socket库来实现网络通信。下面是一个使用socket库的简单例子,实现了一个基于TCP协议的简单服务器和客户端通信。

# 服务器端
import socket

def main():
    # 创建一个TCP socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 绑定IP地址和端口号
    server_address = ('localhost', 8080)
    server_socket.bind(server_address)
    
    # 开始监听
    server_socket.listen(5)
    print('服务器已启动,等待客户端连接...')
    
    while True:
        # 等待客户端连接
        client_socket, client_address = server_socket.accept()
        print('客户端已连接:', client_address)
        
        try:
            while True:
                # 接收客户端发送的数据
                data = client_socket.recv(1024)
                if not data:
                    break
                print('接收到数据:', data.decode())
                
                # 向客户端发送响应数据
                response = '服务器已收到信息:' + data.decode()
                client_socket.sendall(response.encode())
        finally:
            # 关闭客户端连接
            client_socket.close()

if __name__ == '__main__':
    main()

# 客户端
import socket

def main():
    # 创建一个TCP socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 连接到服务器
    server_address = ('localhost', 8080)
    client_socket.connect(server_address)
    
    try:
        while True:
            # 输入要发送的信息
            message = input('请输入要发送的信息:')
            
            # 向服务器发送消息
            client_socket.sendall(message.encode())
            
            # 接收服务器的响应
            data = client_socket.recv(1024)
            print('服务器响应:', data.decode())
    finally:
        # 关闭客户端连接
        client_socket.close()

if __name__ == '__main__':
    main()

在上面的例子中,服务器和客户端通过socket库来进行通信。服务器通过socket.socket()函数创建一个TCP socket对象,并通过bind()函数将其绑定到IP地址和端口号上。之后通过listen()函数开始监听,等待客户端连接。客户端通过socket.socket()函数创建一个TCP socket对象,并通过connect()函数连接到服务器的IP地址和端口号上。

在服务器端,使用accept()函数等待客户端连接,并在成功连接后,使用recv()函数接收客户端发送的数据。之后可以对接收到的数据进行处理,并通过sendall()函数向客户端发送响应数据。服务器通过一个无限循环,实现了与多个客户端的通信。

在客户端,先通过input()函数获取要发送的信息,然后使用sendall()函数将消息发送给服务器。客户端通过recv()函数接收服务器的响应数据,并打印出来。客户端同样通过一个无限循环,可以持续与服务器通信。

这是一个简单的使用socket库实现网络通信的例子。在实际应用中,可以根据具体需求进行更复杂的网络通信操作。