[英]python multiple socket connection
我在下面定義了一個套接字服務器,並且還創建了一個客戶端。 他們能夠彼此交流而沒有問題。
現在,多個應用程序需要連接到此套接字服務器,並將推送數據。 訂閱此服務器的不同客戶端將從服務器讀取數據。
我如何將我的應用程序連接到該服務器並即使沒有客戶端連接也開始寫數據。
import socket
import sys
import time
def socket_connection_1():
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('localhost', 9999)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
# Listen for incoming connections
sock.listen(1)
while True:
# Wait for a connection
print >>sys.stderr, 'waiting for a connection \n'
connection, client_address = sock.accept()
try:
print >>sys.stderr, 'connection from', client_address
# Receive the data in small chunks and retransmit it
while True:
print 'its true'
# data = connection.recv(16)
data = "This is a test message from python socket \n"
# print >>sys.stderr, 'received "%s"' % data
if data:
print 'data being sent'
print >>sys.stderr, 'sending data back to the client'
connection.sendall(data)
else:
print >>sys.stderr, 'no more data from', client_address
break
time.sleep(60)
finally:
# Clean up the connection
connection.close()
socket_connection_1()
這是您要問的嗎?
如果是,這就是您要的內容,那么您必須將服務器生成的數據緩沖到某個地方。 該“某處”可以在文件或內存中。
作為一種優化,您只能在第一個客戶端連接時才生成和緩沖數據,以避免在沒有客戶端連接時浪費用於生成數據的資源。
您將需要一些邏輯來決定何時刪除(“清除”)緩沖的數據,以在沒有更多客戶端連接時釋放存儲容量。
如果您的應用程序可以生成多種類型的數據,並且存儲容量有限,那么您將需要一些邏輯來決定清除哪些數據,以便為要生成的新數據騰出空間。
現在我們越來越接近“緩存”的概念。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.