클라이언트로부터의 연결을 받아서 소켓에 쓰는 작은 서버 쪽 프로그램이 있습니다. 클라이언트가 연결 해제되자 마자 서버 측에서 감지하고 싶습니다. 연결이 끊어 졌을 때 클라이언트가 TCP Fin을 보내고 서버가 클라이언트쪽으로 보낼 데이터가있는 경우에만 서버가이를 감지하고 파손 된 파이프 예외가 발생하는 것을 봅니다. 대신 서버가 클라이언트가 Finish를 보낸 것을 감지하고 즉시 세션을 닫을 수있게하려고합니다. 누군가가 약간의 정보를 제공함으로써 나를 도울 수 있습니까? 연결을 허용하는파이썬 소켓 : 클라이언트가 서버 쪽에서 닫히거나 연결이 끊어 졌음을 감지하는 방법
>>> Error sending data: [Errno 32] Broken pipe
[DEBUG] (Keepalive-Thread) Exiting
서버 프로그램 : 그것은 클라이언트쪽으로 보낼 수있는 일부 데이터를 가지고 있는데이 깨진 파이프 예외를 참조하는 경우에만
def enable_pce(ip):
#Step 1: Create a TCP/IP socket to listen on. This listens for IPv4 AFI
srv = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Step 2: Prevent from "address in use" upon server restart
srv.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#Step 3: Bind the socket to you server ip address
srv_address = (ip,55555)
print 'starting server on %s port %s' % srv_address
srv.bind(srv_address)
#Step 4: Listen for connections
srv.listen(1)
#Step 5: Wait for incoming connections
connection, peer_address = peer.accept()
print 'connection from', connection.getpeername()
return connection