쩨이엠 개발 블로그

[ TCP ] TCP Client 만들기 본문

개발/JAVA

[ TCP ] TCP Client 만들기

쩨이엠 2021. 1. 6. 13:13
728x90
반응형

 

TCP Server를 만들었으니 테스트 용으로 client를 만들어보기로 한다

 

[ TCP ] TCP Server 만들기

TCP 프로토콜 통신을 위해 TCP Server를 만들어보기로 한다 Client에서 통신을 보내면 Server에서 받도록 프로젝트를 만들어보기로 한다 TCP Client --> TCP Server 개발환경 Spring Boot 2.3.4.RELEASE Gradle 7...

gogo-jjm.tistory.com

 

매우 간단해서 Test용으로 대체한다

 

TCP Server와 따로 Springboottest로 하기 위해서는 기존과 다른 port를 사용해야한다

test 패키지 안에 application.yml을 따로 만들어준다

 

 

application.yml

 
 tcp:
  server:
    port: 8091
    

 

 

Socket Test

 
 Socket socket = new Socket("localhost", 8092);
 OutputStream output = socket.getOutputStream();

 byte[] data = {0x02, 0x10, 0x11, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xCF, (byte) 0xEC, 0x03};
 output.write(data);
            
 socket.close();
            

 

 

기존의 log가 찍히는 것을 확인할 수 있다

 

 

 

application.yml을 바꾸지 않고 채널로 바로 보내기 위해서는 밑과 같이 MessageChannel을 만들어 주면 해결된다

가끔 밑의 사진 처럼 MessageChannel을 못찾는다고 할 때가 있는데 그 땐 Package가 MessageChannel이 있는 곳에 있는지 확인해본다

내 경우엔 com.test.iot!

 


 @Autowired
 private MessageChannel inboundChannel;
 
 @Test
 void test_send_sensor_status() { 
     MessagingTemplate messagingTemplate = new MessagingTemplate(this.inboundChannel);

     byte[] bytes = {0x02, 0x10, 0x11, 0x01, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xCF, (byte) 0xEC, 0x03};
     Message<byte[]> message = MessageBuilder.withPayload(bytes).build();
     Message<?> receive = messagingTemplate.sendAndReceive(message);

     byte[] response = new byte[0];

     Assertions.assertTrue(Arrays.equals((byte[]) receive.getPayload(), response));
 }
 
728x90
반응형
Comments