Jas*_*n94 6 python sockets tcp
我有这个从文档中得到的代码:
#!/usr/bin/env python
import socket
TCP_IP = '192.168.1.66'
TCP_PORT = 40000
BUFFER_SIZE = 20 # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connection address:', addr
while True:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data)
conn.close()
Run Code Online (Sandbox Code Playgroud)
但是每次断开连接都会关闭,如何让它永远运行?
小智 6
尝试并更改线路
if not data: break
Run Code Online (Sandbox Code Playgroud)
至
if not data: continue
Run Code Online (Sandbox Code Playgroud)
这种方式不是退出循环,而是等待更多数据
您需要accept()为每个要处理的连接调用一次。到第一个近似值:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
while True:
conn, addr = s.accept()
print 'Connection address:', addr
while True:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data)
conn.close()
Run Code Online (Sandbox Code Playgroud)