请写一个用socket沟通client与server的程序,并给每一步给出解释
时间: 2024-02-19 12:58:21 浏览: 64
好的,以下是一个使用Python socket模块进行client与server通信的程序,并附有详细的解释:
Server端代码:
```python
import socket
# 创建socket对象
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置一个端口号
port = 9999
# 绑定端口号
serversocket.bind((host, port))
# 设置最大连接数,超过后排队
serversocket.listen(5)
while True:
# 建立客户端连接
clientsocket,addr = serversocket.accept()
print("连接地址:%s" % str(addr))
msg = '欢迎访问菜鸟教程!' + "\r\n"
clientsocket.send(msg.encode('utf-8'))
clientsocket.close()
```
代码解释:
1. 创建一个`socket`对象,使用`socket.AF_INET`指定IPv4协议,使用`socket.SOCK_STREAM`指定TCP传输协议。
2. 获取本地主机名,即服务器的主机名。
3. 设置一个端口号,这里设为`9999`。
4. 绑定端口号,使用`serversocket.bind()`方法将端口号与主机名绑定。
5. 设置最大连接数,使用`serversocket.listen()`方法设置最大连接数为5。
6. 使用`while`循环不断接收客户端连接请求,`accept()`方法返回一个新的socket对象,表示客户端与服务器的连接。
7. 打印客户端的IP地址和端口号。
8. 向客户端发送消息,使用`clientsocket.send()`方法发送消息。
9. 关闭客户端的连接,使用`clientsocket.close()`方法关闭连接。
Client端代码:
```python
import socket
# 创建socket对象
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置一个端口号
port = 9999
# 连接服务,指定主机和端口号
clientsocket.connect((host, port))
# 接收小于1024字节的数据
msg = clientsocket.recv(1024)
clientsocket.close()
print(msg.decode('utf-8'))
```
代码解释:
1. 创建一个`socket`对象,使用`socket.AF_INET`指定IPv4协议,使用`socket.SOCK_STREAM`指定TCP传输协议。
2. 获取本地主机名,即客户端的主机名。
3. 设置一个端口号,这里设为`9999`。
4. 连接服务,使用`clientsocket.connect()`方法连接到服务端的主机名和端口号。
5. 接收服务器发来的消息,使用`clientsocket.recv()`方法接收消息并指定每次接收的最大字节数为1024。
6. 关闭客户端的连接,使用`clientsocket.close()`方法关闭连接。
7. 打印服务器发来的消息。
以上就是一个简单的使用Python socket模块进行client与server通信的程序,希望能够帮助到你。
阅读全文