UDP - Gakgu/Gakgu.github.io GitHub Wiki
UDP(User Datagram Protocal)
-
수신측(server)
- 수신 소켓 생성
- 수신 소켓 주소 생성
- 수신 소켓에 수신 소켓 주소를 bind()
- 수신
- 종료
-
송신측(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");
// 서버 소켓 주소를 소켓에 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;
}
#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;
}