Syslog 수신기를 쓰려고하는데 TCP를 통해 들어오는 메시지를 받아들이는데 너무 좋지만 UDP가 작동되기를 원합니다.Syslog 클라이언트에서 메시지를 받아들이 기 위해 Python에서 UDP 소켓 프로그램을 얻고 싶습니까?
이것은 내가 사용하고있는 UDP 서버 코드입니다.이 서버 코드는 파이썬 클라이언트 응용 프로그램을 사용하여 작동합니다. 또한 파이썬 클라이언트 응용 프로그램을 사용하는 다른 응용 프로그램도 있습니다.
# Server program
# UDP VERSION
from socket import *
# Set the socket parameters
host = "localhost"
port = 514
buf = 1024
addr = (host,port)
# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
# Receive messages
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
print "\nReceived message '", data,"'"
# Close socket
UDPSock.close()
이 코드를 사용하여이 코드를 사용하여 서버에 보내고 코드를 표시 할 수 있습니다.
# Client program
from socket import *
# Set the socket parameters
host = "localhost"
port = 514
buf = 1024
addr = (host,port)
# Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)
def_msg = "===Enter message to send to server===";
print "\n",def_msg
# Send messages
while (1):
data = raw_input('>> ')
if not data:
break
else:
if(UDPSock.sendto(data,addr)):
print "Sending message '",data,"'....."
# Close socket
UDPSock.close()
나는 UDP 서버에 로그 메시지를 보낼 수있는 키위 시스템 로그 메시지 생성기와 스네어를 시도하고 아무것도 온다 없습니다. 누군가 나를 이해하도록 도와 줄 수 있을까요?
포트 514에 바인딩 할 때 서버에서 socket.error EPERM ("permission denied")가 표시됩니까? 그렇지 않다면 루트로서 실행하는 것이 유용하다는 것을 알 수 있습니다. 권한이 거부되지 않은 경우 다른 프로세스가 UDP/514에서 수신 대기합니까? 'netstat -a'는 유닉스에 관해 당신에게 말할 것입니다. – msw
그것은 514보다 다른 포트에서 나의 우분투 컴퓨터에서 동작 할 것이며 아마도 syslogd는 포트 514를 취할 것입니다.하지만 제 윈도우 머신에서는 완벽하게 실행됩니다. – Elvar
클라이언트 소프트웨어를 시험하기 위해 Kiwi Syslog Server를 설치하려고했습니다. 그것은 작동하지, 내가 클라이언트 애플 리케이션에 뭔가를 입력하면 키위 서버가 그것을받습니다. 코드 스 니펫에 대해 감사합니다. – Elvar