2012-08-05 4 views
5

मैं इस कोड मैं डॉक्स से मिल गया है:मैं अपना टीसीपी सर्वर हमेशा के लिए कैसे चला सकता हूं?

#!/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() 

लेकिन यह नीचे हर बार मैं डिस्कनेक्ट बंद कर देता है, मैं कैसे यह हमेशा के लिए चलाने बनाने के लिए?

उत्तर

4

आप प्रत्येक के लिए एक बार 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() 
6

प्रयास करें और लाइन

if not data: break 

if not data: continue 

के बजाय पाश बाहर निकलने का इस तरह से, यह अधिक डेटा

संबंधित मुद्दे

 संबंधित मुद्दे