ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1067)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (180)
      • Unreal (69)
      • Unity (100)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 백준
  • 티스토리챌린지
  • 클래스
  • 유니티
  • 배열
  • 알고리즘
  • 프로그래머스
  • C++
  • SQL
  • 함수
  • Unity
  • 오블완
  • 그래픽스
  • C
  • 파이썬
  • 문자열
  • 포인터
  • 언리얼
  • c#
  • string

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

소켓 시스템 - 네트워크 프로그래밍
CS/네트워크

소켓 시스템 - 네트워크 프로그래밍

2024. 9. 30. 15:45

연결형 서비스

  • 소켓: 네트워크 통신을 위한 소프트웨어 교신점
  • 두 개의 독립 프로세스가 네트워크를 통해 통신하려면 논리적인 연관관계를 맺어주는 소켓 필요
  • 서버의 동작
    • Well-known 포트에서 대기
    • 동작과정
      1. 서비스 교신점(호스트의 IP 주소, 포트번호) 공개
      2. 클라이언트로부터 발생하는 서비스 요구 대기
      3. 요청이 오면 클라이언트에 서비스 제공
      4. 해당 클라이언트에 서비스 제공 완료
      5. 단계 2로 이동, 반복
  • 클라이언트의 동작
    • 서버의 Well-known 포트로 접속 시도
    • 동작 과정
      1. 원하는 서비스를 제공하는 서버 확인
      2. 해당 서버와 연결 시도
      3. 서버에 서비스 요청
      4. 서버에 서비스 요구 완료
  • TCP를 이용한 통신 절차
  • 소켓 함수의 컴파일
    • 소켓 관련 라이브러리리 추가 (solaris)
      • cc -o time_client time_client.c -lsocket -lnsl
      • cc -o time_server time_server.c -lsocket -lnsl
    • 서버 먼저 실행하고, 이어서 클라이언트 실행
  • 클라이언트 예제
# define TIME_SERVER  "211.233.201.30"
# define TIME_PORT  5010

main ()
{
    int sock;
    struct sockaddr_in server;
    char buf [256];

    sock = socket (AP_INET, SOCK_STREAM, 0);

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = htonl (inet_addr (TIME_SERVER));
    server.sin_port = htons (TIME_PORT);

    connect (sock, (struct sockaddr *)&server, sizeof(server));

    if (recv (sock, buf, sizeof (buf), 0) == -1)
        exit (1);
    printf("Time information from server is %s", buf);
    close (sock);
}

 

  • 서버 예제

비연결형 서비스

  • UDP를 이용한 통신 절차
  • 클라이언트 예제
  • 서버 예제
 

https://naon.me/posts/til97

저작자표시 (새창열림)

'CS > 네트워크' 카테고리의 다른 글

네트워크 모델 - OSI 참조 모델  (0) 2024.09.30
네트워크의 기초 - 네트워크 주소의 표현  (0) 2024.09.30
데이터 링크 계층 (1) - 프로토콜의 기초  (0) 2024.09.30
IP와 IP 주소 / 서브넷 (Subnet) 개념  (0) 2024.09.24
ATM (Asynchronous Transfer Mode)  (0) 2024.09.23
    'CS/네트워크' 카테고리의 다른 글
    • 네트워크 모델 - OSI 참조 모델
    • 네트워크의 기초 - 네트워크 주소의 표현
    • 데이터 링크 계층 (1) - 프로토콜의 기초
    • IP와 IP 주소 / 서브넷 (Subnet) 개념
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바