使用Python的Client()实现局域网内的通信

发布时间:2023-12-28 05:27:43

在Python中,可以使用socket模块来创建一个客户端,实现局域网内的通信。以下是使用Python的Client()实现局域网内通信的示例代码:

import socket

def main():
    # 创建一个socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 设置服务器的IP地址和端口号
    server_ip = '192.168.0.100'
    server_port = 12345
    
    # 连接服务器
    client_socket.connect((server_ip, server_port))
    
    while True:
        # 接收服务器发送的消息
        server_msg = client_socket.recv(1024).decode()
        print('服务器消息:', server_msg)
        
        # 如果消息为'bye',则结束通信
        if server_msg == 'bye':
            break
        
        # 发送消息到服务器
        client_msg = input('请输入消息:')
        client_socket.send(client_msg.encode())
        
    # 关闭socket连接
    client_socket.close()

if __name__ == "__main__":
    main()

上述代码中,我们首先导入了socket库,然后创建了一个socket对象,使用`socket.AF_INET`参数来指定使用IPv4网络协议进行通信,使用`socket.SOCK_STREAM`参数指定使用TCP协议。然后,通过`connect()`方法连接到服务器的IP地址和端口号。在循环中,客户端会接收服务器发送的消息并将之显示出来,然后通过`input()`函数读取用户输入的消息并发送给服务器。如果服务器发送的消息为'bye',则客户端会结束通信。最后,通过`close()`方法关闭socket连接。

在局域网中,要确保客户端和服务器在同一个局域网内,且知道服务器的IP地址和端口号。可以通过`ifconfig`或者`ipconfig`命令来获取本机的IP地址。

接下来,我们需要一个服务器来接收客户端的消息。以下是一个简单的服务器示例代码:

import socket

def main():
    # 创建一个socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 设置服务器的IP地址和端口号
    server_ip = '192.168.0.100'
    server_port = 12345
    
    # 绑定IP地址和端口号
    server_socket.bind((server_ip, server_port))
    
    # 监听连接
    server_socket.listen(5)
    
    while True:
        print('服务器正在等待连接...')
        
        # 接受客户端的连接请求
        client_socket, client_address = server_socket.accept()
        print('客户端已连接:', client_address)
        
        while True:
            # 发送消息到客户端
            server_msg = input('请输入消息:')
            client_socket.send(server_msg.encode())
            
            # 接收客户端发送的消息
            client_msg = client_socket.recv(1024).decode()
            print('客户端消息:', client_msg)
            
            # 如果消息为'bye',则结束通信
            if client_msg == 'bye':
                break
        
        # 关闭客户端连接
        client_socket.close()
        print('客户端连接已断开')
        
    # 关闭服务器socket连接
    server_socket.close()

if __name__ == "__main__":
    main()

上述代码中,我们首先创建了一个socket对象,然后设置了服务器的IP地址和端口号。通过`bind()`方法将IP地址和端口号绑定到服务器的socket对象上,并通过`listen()`方法开始监听连接。在循环中,服务器会接受客户端的连接请求,并通过`accept()`方法获取客户端的socket对象和地址。然后,服务器会发送消息到客户端,并接收客户端发送的消息。如果客户端发送的消息为'bye',则服务器会结束通信并关闭客户端连接。最后,通过`close()`方法关闭服务器的socket连接。

在局域网中,可以将上述代码分别保存为`client.py`和`server.py`文件,并通过命令行分别运行这两个文件来创建一个局域网内的通信。