能不能把socket.create_connection 放到for循环的外面?
时间: 2024-09-25 15:14:41 浏览: 41
可以将`socket.create_connection`放在for循环之外,因为这只是一个初始化操作,它不会随每次迭代而改变。不过,在这种情况下,通常会先创建一个socket实例,然后再在每个连接尝试时使用它。这里是一个示例:
```javascript
// 在server.js中
const server = require('express')();
const http = require('http').createServer(server);
const io = require('socket.io')(http);
let socket; // 创建一个全局socket变量
io.on('connection', function (newSocket) {
console.log('A user connected: ' + newSocket.id);
socket = newSocket; // 当有新的连接时更新全局socket
socket.on('disconnect', function () {
console.log('A user disconnected: ' + socket.id);
});
});
http.listen(3000, function () {
console.log('Server started!');
});
```
在客户端(client.py)里,你可以这样调用:
```python
# 客户端
import socket
import sys
HOST, PORT = "localhost", 9999
data = " ".join(sys.argv[1:]) # 数据处理...
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 初始化socket
try:
sock.connect((HOST, PORT))
# 在for循环中使用已经创建的socket
for i in range(len(some_list)): # 假设some_list是你想发送的数据列表
sock.sendall(bytes(data + "\n", "utf-8"))
received = str(sock.recv(1024), "utf-8")
finally:
sock.close()
print("Sent: {}".format(data))
print("Received: {}".format(received))
```
请注意,这里的`some_list`需要替换为实际要发送的数据。
阅读全文