본문 바로가기

Development

네트워크 프로그래밍 기초

안녕하세요, GameLabMaster입니다. 오늘은 네트워크 프로그래밍 기초에 대해 알아보겠습니다.

네트워크 프로그래밍은 컴퓨터 간의 통신을 구현하는 프로그래밍 기법입니다. 이를 통해 다양한 멀티플레이어 게임, 웹 서비스, 네트워크 응용 프로그램 등을 개발할 수 있습니다.

네트워크 프로그래밍 기초 개념

  • IP 주소: 인터넷 프로토콜(IP) 주소는 인터넷에서 컴퓨터를 식별하는 고유한 주소입니다.
  • 포트 번호: 네트워크 서비스를 구분하기 위해 사용되는 번호로, 0~65535 사이의 값이 가능합니다.
  • 소켓(Socket): 네트워크 상에서 데이터를 주고받는 데 사용되는 객체로, IP 주소와 포트 번호를 이용해 연결을 생성합니다.

프로토콜(Protocol)

  • TCP(Transmission Control Protocol): 연결 지향적 프로토콜로, 신뢰성 있는 데이터 전송을 지원합니다.
  • UDP(User Datagram Protocol): 비연결 지향적 프로토콜로, 데이터 전송 속도가 빠르지만 신뢰성이 낮습니다.

C#을 이용한 네트워크 프로그래밍 예제

  • 서버와 클라이언트 프로그램 구현
  • TCP/IP 소켓을 사용한 데이터 전송

예시: TCP 서버 구현

 

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

public class SimpleTcpServer
{
    public static void Main()
    {
        // Listen할 IP 주소와 포트를 설정합니다.
        IPAddress ip = IPAddress.Parse("127.0.0.1");
        int port = 8080;

        TcpListener server = new TcpListener(ip, port);
        server.Start();
        Console.WriteLine("Server has started on {0}:{1}, waiting for a connection...", ip, port);

        // 클라이언트의 연결을 대기합니다.
        TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("A client connected.");

        // 데이터를 주고받을 스트림을 생성합니다.
        NetworkStream stream = client.GetStream();

        // 클라이언트로부터 메시지를 받고 다시 전송합니다.
        byte[] buffer = new byte[1024];
        int bytesRead = stream.Read(buffer, 0, buffer.Length);
        string data = Encoding.ASCII.GetString(buffer, 0, bytesRead);

        Console.WriteLine("Received data: {0}", data);

        byte[] responseData = Encoding.ASCII.GetBytes("Server received: " + data);
        stream.Write(responseData, 0, responseData.Length);

        // 연결을 종료합니다.
        client.Close();
        server.Stop();
    }
}

 

이 예제는 간단한 TCP 서버를 구현한 것입니다. 네트워크 프로그래밍을 이해하고 활용하면 다양한 멀티플레이어 게임 및 네트워크 응용 프로그램을 만들 수 있습니다. 앞으로 프로젝트에서 네트워크 프로그래밍 기술을 활용하여 멋진 서비스를 구현해보세요.