2017-08-25 75 views
0

我有下面的代碼,它接收我想要的數據,我想要的,然後終止。我怎樣才能設置這個連接到我的客戶端,它始終具有相同的IP並保持連接或從該客戶端偵聽?如何保持連接到一個指定的客戶端

它的條形碼掃描儀,併發送數據罰款,我只是需要永遠列出它。

Servercode.py

import socket #for sockets 
import sys #for exit 

try: 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM,) 
except socket.error as err_msg: 
    print ('Unable to instantiate socket. Error code: ' + str(err_msg[0]) + ' , Error message : ' + err_msg[1]) 
sys.exit(); 

print ('Socket Initialized') 

host = socket.gethostname() 
port = 12345     
s.bind((host, port))   

s.listen(5)     
print ('listening....') 


conn, addr = s.accept() 
print ('Got connection from', addr) 
while 1: 
data = conn.recv(1024) 
stringdata = data.decode('ascii') 
if not data: break 
print ('received data:', stringdata) 
conn.close() 
+0

它看起來像你的客戶端斷開連接。你在問如何阻止客戶端斷開連接? –

+0

這會很好,但更多的是尋找最安全的方法連接到IP爲192.168.1.200的客戶端。所以只要服務器正在運行,它將始終在後臺監聽準備好接受。 – DevJustin

+0

哦,所以你的問題是如何拒絕來自IP地址而不是特定IP地址的客戶端的連接? –

回答

0

要拒絕的連接不是特定的一個從IP地址等。 你已經擁有你最需要的東西:

print ('Got connection from', addr) 

只需添加這樣的事情:

if addr[0] != '192.168.1.200': 
    conn.close() 
+0

謝謝!我知道這是沿着這條線。我通過's.close()'使它更加安全 – DevJustin

相關問題