有沒有辦法通過bash/nc/xinetd/nginx巧妙的欺騙來運行只輸出Unix時間的TCP服務器然後斷開連接?服務於unix時間的TCP服務器
客戶端連接到TCP服務器,服務器以字符串形式輸出unix時間,例如, 「1456860938」,然後服務器斷開客戶端連接。
服務器應繼續運行以服務於許多客戶端,但每個連接的時間長度非常短。
有沒有辦法通過bash/nc/xinetd/nginx巧妙的欺騙來運行只輸出Unix時間的TCP服務器然後斷開連接?服務於unix時間的TCP服務器
客戶端連接到TCP服務器,服務器以字符串形式輸出unix時間,例如, 「1456860938」,然後服務器斷開客戶端連接。
服務器應繼續運行以服務於許多客戶端,但每個連接的時間長度非常短。
一個快速的python腳本可能會訣竅。我引用了這個socket programming tutorial。這純粹是TCP,而不是HTTP服務器
'''
TCP Time Server
'''
import socket
import sys
import time
import signal
HOST = '' # blank for All interfaces
PORT = 8000 # Port to listen on
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Signal handler to close the socket on exit
def signal_handler(signal, frame):
s.close()
sys.exit(0)
# Bind to port
try:
s.bind((HOST, PORT))
signal.signal(signal.SIGINT, signal_handler)
except socket.error as msg:
print('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
# Listen for connections
s.listen(1)
print('Ready to serve')
# Except connections forever
while 1:
#wait to accept a connection - blocking call
conn, addr = s.accept()
conn.sendall(str(int(time.time())))
conn.close()
輸出示例:
$ nc localhost 8000
1456868540
假設你正在運行一個標準inetd
,你可以簡單地添加到date
因此/etc/inetd.conf
:
daytime stream tcp nowait nobody /bin/date date +%s
重新加載後(sudo pkill -HUP inetd
),您可以驗證結果:
$ netcat localhost daytime
1456915174
(顯然,如果您已經在那裏運行守護進程,請使用除daytime
以外的端口)。
使用一個帶有php和php頁面的網絡服務器:'echo time();'輸出是(例如):'1456861853' – Cyrus
嘗試不寫另一個web服務器代碼,儘管它會很簡單。 – garbagecollector