UDP - Gakgu/Gakgu.github.io GitHub Wiki

๊ฐœ์š”

UDP(User Datagram Protocal)

์ ˆ์ฐจ

  • ์ˆ˜์‹ ์ธก(server)

    • ์ˆ˜์‹  ์†Œ์ผ“ ์ƒ์„ฑ
    • ์ˆ˜์‹  ์†Œ์ผ“ ์ฃผ์†Œ ์ƒ์„ฑ
    • ์ˆ˜์‹  ์†Œ์ผ“์— ์ˆ˜์‹  ์†Œ์ผ“ ์ฃผ์†Œ๋ฅผ bind()
    • ์ˆ˜์‹ 
    • ์ข…๋ฃŒ
  • ์†ก์‹ ์ธก(Client)

    • ์†ก์‹  ์†Œ์ผ“ ์ƒ์„ฑ
    • ์†ก์‹  ์†Œ์ผ“ ์ฃผ์†Œ ์ƒ์„ฑ
    • ์†ก์‹ 
    • ์ข…๋ฃŒ

์˜ˆ์ œ

์ˆ˜์‹ ์ธก(Server)

#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define BUFFER_SIZE 512

int main()
{
  // ์„œ๋ฒ„ ์†Œ์ผ“ ์ƒ์„ฑ
  int sock = socket(PF_INET, SOCK_DGRAM, 0);

  // ์„œ๋ฒ„ ์†Œ์ผ“ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑ
  struct sockaddr_in server_addr;
  memset(&server_addr, 0, sizeof(server_addr));
  server_addr.sin_family = PF_INET;
  server_addr.sin_port = htons(1234);
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // or inet_addr("127.0.0.1");

  // ์„œ๋ฒ„ ์†Œ์ผ“ ์ฃผ์†Œ๋ฅผ ์†Œ์ผ“์— bind()
  bind(sock, (struct sockaddr*)&server_addr, sizeof(server_addr));

  // ์ˆ˜์‹ 
  while(1)
  {
    char buf[BUFFER_SIZE];
    struct sockaddr_in client_addr;
    socklen_t client_addr_size = sizeof(client_addr);

    recvfrom(sock, buf, BUFFER_SIZE, 0, (struct sockaddr*)&client_addr, &client_addr_size);
    printf("%s", buf);
  }

  // ์ข…๋ฃŒ
  close(sock);
  return 0;
}

์†ก์‹ ์ธก(Client)

#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define BUFFER_SIZE 512

int main()
{
  // ์„œ๋ฒ„ ์†Œ์ผ“ ์ƒ์„ฑ
  int sock = socket(PF_INET, SOCK_DGRAM, 0);

  // ์„œ๋ฒ„ ์†Œ์ผ“ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑ
  struct sockaddr_in server_addr;
  memset(&server_addr, 0, sizeof(server_addr));
  server_addr.sin_family = PF_INET;
  server_addr.sin_port = htons(1234);
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // or inet_addr("127.0.0.1");

  // ์†ก์‹ 
  while(1)
  {
    char buf[BUFFER_SIZE] = "asdf";
    sendto(sock, buf, BUFFER_SIZE, 0, (struct sockaddr*)&server_addr, sizeof(server_addr));
  }

  // ์ข…๋ฃŒ
  close(sock);
  return 0;
}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ