흐아너무어려워요
18
2019-11-09 14:11:50
0
86

파이썬 소켓통신 XML형식 질문입니다


안녕하세요! 파이썬으로 소켓통신을 통해 클라이언트에서 서버로 XML형식으로 데이터를 전송해야하는데요....


이 XML형식 전체를 어떻게 주고받아야할지 모르겠습니다 .ㅠㅠㅠ

서버 코드가 아래면

from socket import *

# 소캣 객체 생성, 첫번째 인자 : 주소체계, 두번째 인자 : 소켓 타입
serverSock = socket(AF_INET, SOCK_STREAM)

# bind() - 생성된 소켓의 번호와 실제 어드레스 패밀리를 연결
serverSock.bind((''8099)) # '' 공백 : 모든 인터페이스와 연결

# (1) -> 해당 소켓이 총 몇개의 동시접속까지 허용할지 나타낼 숫자
# 서버 소켓은 상대방의 접속이 올때까지 대기하는 상태
serverSock.listen(1)

# 소켓에 누군가의 연결 허용
connectionSock, addr = serverSock.accept()

# 연결된 상대방의 주소 출력
print(str(addr),'에서 접속이 확인되었습니다.')

# 클라이언트로부터 데이터 받음
data = connectionSock.recv(1024)
print('받은 데이터 : ', data.decode('utf-8'))   # encode() - 문자열을 byte로 변환

# 클라이언트에게 데이터 전송
connectionSock.send('I am a server.'.encode('utf-8'))
print('메시지를 보냈습니다.')


XML 형식은 아래와 같습니다.

# -----------------------------------------------------------------
# XML 형식
#   <SECS2_XML_MESSAGE>
#     <HEAD>
#       <SystemByte> 00006 </SystemByte>
#       <CMD> 3 </CMD>
#       <Stream> 6 </Stream>
#       <Function> 11 </Function>
#     </HEAD>
#     <BODY>
#       <CEID> 4 </CEID> // Line_Env_Update
#       <REPORTS>
#         <REPORT>
#           <REPORTID> 400 </REPORTID>
#           <VARIABLES>
#             <V> 26 </V>
#             <V> 51 </V>
#           </VARIABLES>
#         </REPORT>
#       </REPORTS>
#     </BODY>
#   </SECS2_XML_MESSAGE>
# -----------------------------------------------------------------

## PI -> Server  라인 환경 정보 업데이트(온습도)
def Send_s6f11_TempHumid(_SystemByte_CEID_Temp_Humid):
     clientSock = connToServer("127.0.0.1"8099# 서버에 접속
     root = Element("SECS2_XML_MESSAGE")

     ## HEAD
     head = SubElement(root, "HEAD")
     SubElement(head, "SystemByte").text = str(_SystemByte)
     SubElement(head, "CMD").text = "3"
     SubElement(head, "Stream").text = "6"
     SubElement(head,"Function").text = "11"

     ## BODY
     body = SubElement(root, "BODY")
     SubElement(body, "CEID").text = str(_CEID)     # CEID
     reports = SubElement(body, "REPORTS")

     ## REPORT
     report = SubElement(reports, "REPORT")
     SubElement(report, "REPORTID").text = "400"    # REPORTID
     variables = SubElement(report, "VARIABLES")
     SubElement(variables, "TEMP").text = str(_Temp)    # TEMP
     SubElement(variables, "HUMID").text = str(_Humid)  # HUMID

     indent(root)
     #dump(root)
     SendData = str(root)

     clientSock.send(SendData.encode('utf-8'))    # Server로 데이터 전송
     print(root)


아래 Send_s6f11_TempHumid함수로 생성되는 XML 형식은 위 주석에 달아놓은 형식인데요..

저걸 저대로 서버에 전송해야하는데... 어떻게 해야할까요 ? ㅠ ㅠ


-1
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.