3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish
3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish

통합 예제 (Tcp/Client)

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

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

예제 1 : 기본 Tcp Client 예제 

Python
# 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로 변환

Python
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에 접속하고 byte형 send_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 : 재 접속

Python
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된 소켓을 닫는 것에 유의 바랍니다.