Development
네트워크 프로그래밍 기초
GameLabMaster
2023. 4. 13. 14:01
안녕하세요, 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 서버를 구현한 것입니다. 네트워크 프로그래밍을 이해하고 활용하면 다양한 멀티플레이어 게임 및 네트워크 응용 프로그램을 만들 수 있습니다. 앞으로 프로젝트에서 네트워크 프로그래밍 기술을 활용하여 멋진 서비스를 구현해보세요.