본문 바로가기
nest.js

node net.connect를 이용하여 Blocking TCP Socket Message Send, Receive 테스트 진행

by Hwoarang757 2024. 10. 9.

nest.js 가 클라이언트인 상황으로 , TCP Socket을 Listening을 하고 있는 서버에 메시지 전송 예제 입니다. 

 

1. nestjs Client class 작성 진행

import { Logger } from "@nestjs/common";


export class TcpClient {
    static logger = new Logger(TcpClient.name);

    static net = require('net');


    static initTcpConnection()  {
        const client = new this.net.Socket();

        let result;
        client.connect(35000 , 'localhost' , (data : string) => {
            client.on('data',(data : string) => {
               result = data;
               this.logger.log(result);
               client.end();
            });
        });
        
        return client;
    }  

    static sendTcpMessage(message : string) {
        const client = this.initTcpConnection();
        client.write("Header Sended");
        client.write(
            JSON.stringify(
            {
                "content" : "Send Body",
                "title" : "Send Title"
            })
        )

    }

}

 

2. nestjs에서 spec.ts 를 이용하여 테스트 하기 위하여 작성 하였습니다.

import { TcpClient } from './tcpclient';


describe("TcpClient Test", () => {

  it("Test SendMessage" , () => {
    TcpClient.sendTcpMessage("message");
  });

});

 

3. TCP Server , C#으로 간단하게 예제 작성 하였습니다.

// See https://aka.ms/new-console-template for more information


using System.Net;
using System.Net.Sockets;
using System.Text;

TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1") , 35000);
Console.WriteLine("Start Listener");
listener.Start();

while(true)
{
    using (TcpClient client = listener.AcceptTcpClient()) 
    using (NetworkStream stream = client.GetStream())
    {
    
        Console.WriteLine($"Connected {(client.Client.RemoteEndPoint as IPEndPoint)?.Address}");    

        if (!stream.CanRead) continue;

        byte[] buffer = new byte[client.ReceiveBufferSize];

        int bytesRead = 0;
        try
        {
            while ((bytesRead = stream.Read(buffer, 0, client.ReceiveBufferSize)) != 0)
            {
                string received = Encoding.Default.GetString(buffer, 0, bytesRead);
                Console.WriteLine($"Received : {received}");

                byte[] rst = Encoding.Default.GetBytes($"{received}");
                stream.Write(rst,0,rst.Length);

            }

            Console.WriteLine("Client DisConnected");
        } catch(Exception exception)
        {

        }
    
    }
}

 

4. npm run test 실행 결과 입니다.

4-1. 서버

 

4-2. 클라이언트

'nest.js' 카테고리의 다른 글

SHA256 암호화 알고리즘으로 Text 암호화 예제  (2) 2024.09.30