优化以下代码import socket # 创建套接字对象,AF_INET基于TCP/UDP通信,SOCK_STREAM以数据流的形式传输数据,这里就可以确定是TCP了 server = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM) print(server) # 绑定ip地址和端口,127.0.0.1代表回环地址,只能当前计算机访问 server.bind(('',8521)) # 建立半链接池,允许存放5个请求 server.listen(500) # 等待建立连接请求,会返回两个值,一个是连接会话,一个是连接的客户端IP与端口 conn,ip_addr = server.accept() while True: # 接收客户端传递的数据,不能超过1024字节 res = str(conn.recv(1024), encoding='utf-8') # sd=server.recv() # print(sd) # 将客户端的数据接收到以后,转换成大写再编码后发送给客户端 conn.send(res.decode('utf-8').upper().encode('utf-8')) # server.recv() print(res)
时间: 2024-03-03 11:52:44 浏览: 25
这段代码可以进行如下优化:
1. 将IP地址和端口号设置为变量,方便修改和复用。
2. 将接收和发送数据的逻辑封装为函数,提高代码的复用性和可读性。
3. 在循环中增加异常处理,防止程序出错后无法正常关闭套接字。
下面是优化后的代码:
```python
import socket
HOST = ''
PORT = 8521
BUFFER_SIZE = 1024
def recv_data(conn):
data = conn.recv(BUFFER_SIZE)
return str(data, encoding='utf-8')
def send_data(conn, data):
conn.send(data.upper().encode('utf-8'))
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
server.bind((HOST, PORT))
server.listen(5)
print('Server listening on port', PORT)
conn, addr = server.accept()
print('Connected by', addr)
try:
while True:
data = recv_data(conn)
if not data:
break
print('Received:', data)
send_data(conn, data)
except Exception as e:
print(e)
finally:
conn.close()
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)