从服务器向客户端发送连续数据 python
Send Continuous Data to Client from Server python
我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用时间戳作为示例将其发送到连接的多个客户端。我已经使用多线程来支持多个客户端。我希望每 10 秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端持续接收数据。我尝试在客户端添加 while 循环,但它不可能。有什么建议请
示例代码如下:
服务器端:
import socket
import os
from threading import Thread
import thread
import threading
import time
import datetime
def listener(client, address):
print "Accepted connection from: ", address
with clients_lock:
clients.add(client)
try:
while True:
data = client.recv(1024)
if not data:
break
else:
print repr(data)
with clients_lock:
for c in clients:
c.sendall(data)
finally:
with clients_lock:
clients.remove(client)
client.close()
clients = set()
clients_lock = threading.Lock()
host = socket.gethostname()
port = 10016
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host,port))
s.listen(3)
th = []
while True:
print "Server is listening for connections..."
client, address = s.accept()
timestamp = datetime.datetime.now().strftime("%I:%M:%S %p")
client.send(timestamp)
time.sleep(10)
th.append(Thread(target=listener, args = (client,address)).start())
s.close()
客户端:
import socket
import os
from threading import Thread
import socket
import time
s = socket.socket()
host = socket.gethostname()
port = 10016
s.connect((host, port))
print (s.recv(1024))
s.close()
# close the connection
我的输出:
01:15:10
客户端所需的输出:
01:15:10
01:15:20
01:15:30
#and should go on
服务器端
while True:
client, address = s.accept()
th.append(Thread(target=listener, args = (client,address)).start())
s.close()
在 def listener() 中更改 while 循环以像这样为每个线程连续发送数据
while True:
data = client.recv(1024)
if data == '0':
timestamp = datetime.datetime.now().strftime("%I:%M:%S %p")
client.send(timestamp)
time.sleep(2)
客户端在while循环中添加这一行来发送一些数据以满足if条件
s.connect((host, port))
while True:
s.send('0')
print(s.recv(1024))
#s.close()
我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用时间戳作为示例将其发送到连接的多个客户端。我已经使用多线程来支持多个客户端。我希望每 10 秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端持续接收数据。我尝试在客户端添加 while 循环,但它不可能。有什么建议请
示例代码如下: 服务器端:
import socket
import os
from threading import Thread
import thread
import threading
import time
import datetime
def listener(client, address):
print "Accepted connection from: ", address
with clients_lock:
clients.add(client)
try:
while True:
data = client.recv(1024)
if not data:
break
else:
print repr(data)
with clients_lock:
for c in clients:
c.sendall(data)
finally:
with clients_lock:
clients.remove(client)
client.close()
clients = set()
clients_lock = threading.Lock()
host = socket.gethostname()
port = 10016
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host,port))
s.listen(3)
th = []
while True:
print "Server is listening for connections..."
client, address = s.accept()
timestamp = datetime.datetime.now().strftime("%I:%M:%S %p")
client.send(timestamp)
time.sleep(10)
th.append(Thread(target=listener, args = (client,address)).start())
s.close()
客户端:
import socket
import os
from threading import Thread
import socket
import time
s = socket.socket()
host = socket.gethostname()
port = 10016
s.connect((host, port))
print (s.recv(1024))
s.close()
# close the connection
我的输出:
01:15:10
客户端所需的输出:
01:15:10
01:15:20
01:15:30
#and should go on
服务器端
while True:
client, address = s.accept()
th.append(Thread(target=listener, args = (client,address)).start())
s.close()
在 def listener() 中更改 while 循环以像这样为每个线程连续发送数据
while True:
data = client.recv(1024)
if data == '0':
timestamp = datetime.datetime.now().strftime("%I:%M:%S %p")
client.send(timestamp)
time.sleep(2)
客户端在while循环中添加这一行来发送一些数据以满足if条件
s.connect((host, port))
while True:
s.send('0')
print(s.recv(1024))
#s.close()