您现在的位置是:首页 >其他 >Python的网络编程和socket(通过故事来学习)网站首页其他

Python的网络编程和socket(通过故事来学习)

会敲代码的主持人 2024-07-21 12:01:02
简介Python的网络编程和socket(通过故事来学习)

有一天,有一个名叫小云的开发者,她刚学了 Python 网络编程,并且想试着用 socket 编写一个简单的客户端-服务器程序。

小云打开了她的 Python 编辑器,开始编写客户端的代码。她创建了一个 socket 对象,然后使用该对象连接到服务器。她编写了以下代码:

```python
import socket 
import sys

def client_program():
    host = socket.gethostname()  # 获取主机名
    port = 5000  # 设置端口号

    client_socket = socket.socket()  # 创建 socket 对象
    client_socket.connect((host, port))  # 连接服务器

    message = input(" -> ")  # 输入消息 
    client_socket.send(message.encode())  # 发送消息 

    data = client_socket.recv(1024).decode()  # 接收消息

print('Received from server: ' + data)  # 打印接收到的消息 

    client_socket.close()  # 关闭连接


if __name__ == '__main__':
    client_program()
```

小云很高兴自己能够编写出这样的客户端程序。但是她知道,这个程序还没有完成。她还需要编写一个简单的服务器程序来处理客户端发送的消息。

于是,小云开始编写服务器的代码。她创建了一个 socket 对象,并让该对象监听来自客户端的连接请求。当客户端连接到服务器后,服务器接收并处理客户端发送的消息。

以下是她编写的服务器代码:

```python
import socket 
import sys

def server_program():
    host = socket.gethostname()  # 获取主机名
    port = 5000  # 设置端口号 

    server_socket = socket.socket()  # 创建 socket 对象
    server_socket.bind((host, port))  # 绑定端口 

    server_socket.listen(2)  # 监听连接请求

conn, address = server_socket.accept()  # 接受客户端连接
    print("Connection from: " + str(address))

    while True:
        data = conn.recv(1024).decode()  # 接收消息 
        if not data:
            break

        print("from connected user: " + str(data))

        data = str(data).upper()  # 将消息转换为大写
        print("sending: " + str(data))
        conn.send(data.encode())  # 发送消息 

    conn.close()  # 关闭连接


if __name__ == '__main__':
    server_program()
```

小云很自豪地运行了她的客户端和服务器程序,并在命令行中输入了一些消息。她很高兴地发现,她能够成功地发送和接收消息,并用服务器将消息转换为大写后返回给客户端。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。