UDP Socket Server-Client

mail@pastecode.io avatar
unknown
c_cpp
10 months ago
2.0 kB
3
Indexable
// 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