Skip to main content
Skip table of contents

통합 예제 (Tcp/Client)

server IP = 192.168.137,200, open port =20002 이고,

수신한 패킷을 그대로 client 에게 전송하는 동작(mirroring)을 한다고 가정합니다

예제 1 : 기본 Tcp Client 예제 

PY
# server IP = 192.168.137,200, open port =20002 로 가정 
g_sock = client_socket_open("192.168.137.200", 20002)

tp_popup("connect O.K!",DR_PM_MESSAGE)
while 1:  
  client_socket_write(g_sock, b"abcd")  # byte형으로 스트링 “abcd” 전송
  wait(0.1)    
  res, rx_data = client_socket_read(g_sock) #server로부터 수신 대기
  tp_popup("res={0}, rx_data ={1}".format(res, rx_data), DR_PM_MESSAGE) 
  wait(0.1)

server 에 접속하고 string “abcd”를 전송합니다. (b string byte형으로 변환합니다.)

server로 부터 수신된 메시지를 TP에 출력합니다.

server는 수신된 데이터를 그대로 송신하므로 res = 4, rx_data=b”abcd” 가 됩니다

예제 2 : 다양한 패킷 전송 예제 

송신 패킷 : “MEAS_START" +data1[4byte]+data2[4byte]

  • data1: integer를 4byte로 변환 ex) 1 → 00000001
  • data2: integer를 4byte로 변환 ex) 2 → 00000002

ex) data1=1, data2=2 인 경우: “MEAS_START"+00000001+00000002        

  • 실제 패킷: 4D4541535F53544152540000000100000002
  • 수신 패킷 : res=18, rx_data=“MEAS_START"+00000001+00000002
    • rxd1 추출 : 10~14번째 byte interger로 변환
    • rxd2 추출 : 14~18번째 byte interger로 변환


PY
g_sock = client_socket_open("192.168.137.100", 20002)
tp_popup("connect O.K!",DR_PM_MESSAGE)

send_data = b"MEAS_START"
data1 =1
data2 =2  
send_data += (data1).to_bytes(4, byteorder='big') 
send_data += (data2).to_bytes(4, byteorder='big') 
  
client_socket_write(g_sock, send_data)  
 
wait(0.1)    
 
res, rx_data = client_socket_read(g_sock)
tp_popup("res={0}, rx_data ={1}".format(res, rx_data), DR_PM_MESSAGE) 

rxd1 = int.from_bytes(rx_data[10:10+4], byteorder='big', signed=True)
rxd2 = int.from_bytes(rx_data[14:14+4], byteorder='big', signed=True)

tp_popup("res={0}, rxd1={1}, rxd2={2}".format(res, rxd1, rxd2), DR_PM_MESSAGE) 

client_socket_close(g_sock)

server에 접속하고 bytesend_data를 전송합니다.

server는 수신된 데이터를 그대로 송신하므로 res = 18, rx_data send_data와 같은 패킷을 가집니다.

  • rxd1 추출 : 10~14번째 byte interger로 변환
  • rxd2 추출 : 14~18번째 byte interger로 변환

최종 결과는 res=18, rxd1=1, rxd2=2 가 됩니다.

예제 3 : 재 접속

PY
def fn_reconnect():
  global g_sock
  client_socket_close(g_sock)
  g_sock = client_socket_open("192.168.137.200", 20002)
  return   

g_sock = client_socket_open("192.168.137.200", 20002)
tp_popup("connect O.K!",DR_PM_MESSAGE)

client_socket_write(g_sock, b"abcd")  
wait(0.1)    

while 1:   
  res, rx_data = client_socket_read(g_sock)
  if res < 0:
     fn_reconnect()
  else:      
     tp_popup("res={0}, rx_data ={1}".format(res, rx_data), DR_PM_MESSAGE) 
  wait(0.1)

client_socket_read() 명령어의 리턴값을 체크합니다.

server와 접속이 끊어지거나, 통신 문제가 발생하면 음수 값이 리턴됩니다.

음수값이 리턴된 경우 reconnect() 함수를 호출하여 재접속을 시도합니다.

재 접속 시도 시, 기존에 open된 소켓을 닫는 것에 유의 바랍니다.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.