UDPでは接続を確立せずに通信を行う

Linuxでは、UDP(ユーザーデータグラムプロトコル)は接続なし通信プロトコルで、接続を確立せずに通信できます。

UDP通信の基本手順は以下です:

  1. ソケット()
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  1. bind()
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = INADDR_ANY;
servaddr.sin_port = htons(PORT);
bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
  1. recvfrom()
char buffer[MAX_BUFFER_SIZE];
struct sockaddr_in cliaddr;
socklen_t len = sizeof(cliaddr);
int n = recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&cliaddr, &len);
  1. sendto()
char message[] = "Hello, UDP!";
sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&cliaddr, sizeof(cliaddr));

UDPはコネクションレスのプロトコルのため、パケットの紛失や順序の乱れ、重複が発生する可能性があります。そのため、再送機構やチェックサム、検証などのアプリケーション層でこれらの問題に対処する必要があります。

上記のものはUDP通信の基本的な手順で、具体的なニーズに応じて修正・拡張することが可能です。

bannerAds