본문 바로가기
IT/C#

C#으로 간단한 소켓 통신 프로그램 만들기

by eplus 2024. 12. 2.

아래는 C#으로 간단한 소켓 통신 프로그램의 예제입니다. 클라이언트와 서버가 서로 메시지를 주고받을 수 있도록 구현한 코드입니다.

서버 코드

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

class Server
{
    static void Main(string[] args)
    {
        TcpListener server = null;
        try
        {
            int port = 12345;
            server = new TcpListener(IPAddress.Any, port);
            server.Start();
            Console.WriteLine("서버가 시작되었습니다. 클라이언트를 기다리는 중...");

            while (true)
            {
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("클라이언트가 연결되었습니다.");

                NetworkStream stream = client.GetStream();

                byte[] buffer = new byte[256];
                int bytesRead = stream.Read(buffer, 0, buffer.Length);
                string receivedMessage = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                Console.WriteLine("수신 메시지: " + receivedMessage);

                string responseMessage = "메시지 수신 완료!";
                byte[] responseData = Encoding.UTF8.GetBytes(responseMessage);
                stream.Write(responseData, 0, responseData.Length);

                client.Close();
            }
        }
        finally
        {
            server?.Stop();
        }
    }
}

클라이언트 코드

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

class Client
{
    static void Main(string[] args)
    {
        try
        {
            string server = "127.0.0.1";
            int port = 12345;

            TcpClient client = new TcpClient(server, port);
            Console.WriteLine("서버에 연결되었습니다.");

            NetworkStream stream = client.GetStream();

            string message = "안녕하세요, 서버!";
            byte[] data = Encoding.UTF8.GetBytes(message);
            stream.Write(data, 0, data.Length);
            Console.WriteLine("메시지 전송: " + message);

            byte[] buffer = new byte[256];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);
            string responseMessage = Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine("서버 응답: " + responseMessage);

            client.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("예외 발생: " + e.Message);
        }
    }
}

실행 방법

  1. 위 코드를 각각 Server.cs와 Client.cs로 저장합니다.
  2. 서버를 먼저 실행합니다.
  3. 클라이언트를 실행하여 서버와 통신을 테스트합니다.

위 코드는 기본적인 TCP 소켓 통신의 구조를 포함하고 있으며, 메시지 전송 및 응답 기능을 수행합니다. 필요에 따라 확장하여 사용할 수 있습니다.

728x90
반응형