UDP Socket Server-Client
// Server #include <stdio.h> #include <stdbool.h> #include <unistd.h> #include <pthread.h> #include <arpa/inet.h> #include <string.h> int main() { int socketfd ; if ( (socketfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { perror("socket creation failed"); return 0; } struct sockaddr_in serverAddr = {0}, cliAddr = {0}; socklen_t cliLen = sizeof(cliAddr); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(12345); serverAddr.sin_addr.s_addr = INADDR_ANY; if (bind(socketfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0){ perror("Failed to bind"); return 0; } char *confirm = "Received from Server"; while(true){ char buffer[1024] = {0}; socklen_t len = 0; int recvSock = recvfrom(socketfd, (char *)buffer, sizeof(buffer), MSG_WAITALL, (struct sockaddr *)&cliAddr, &cliLen); buffer[recvSock] = '\0'; printf("Received: %s\n", buffer); sendto(socketfd, (const char *)confirm, strlen(confirm), MSG_CONFIRM, (const struct sockaddr *) &cliAddr, sizeof(cliAddr)); printf("Confirm message sent.\n"); } close(socketfd); } // Client #include <stdbool.h> #include <unistd.h> #include <pthread.h> #include <arpa/inet.h> #include <stdio.h> #include <iostream> int main(){ char msg[] = "hi"; int t = sizeof(msg); int socketfd = socket(AF_INET, SOCK_DGRAM, 0); struct sockaddr_in serverAddr = {0}; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(12345); inet_pton(AF_INET,"127.0.0.1",&serverAddr.sin_addr.s_addr); int byteCount = sendto(socketfd, msg, t, 0, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); // printf("Sent successfully %d\n", byteCount); char buffer[1024]; socklen_t len; int n = recvfrom(socketfd,(char *)buffer, sizeof(buffer),MSG_WAITALL, (struct sockaddr *)&serverAddr, &len); buffer[n]='\0'; std::cout<<buffer<<"\n"; close(socketfd); }
Leave a Comment