|
| 1 | +#include <stdio.h> |
| 2 | +#include <stdlib.h> |
| 3 | +#include <unistd.h> |
| 4 | +#include <string.h> |
| 5 | +#include <sys/types.h> |
| 6 | +#include <sys/socket.h> |
| 7 | +#include <arpa/inet.h> |
| 8 | +#include <netinet/in.h> |
| 9 | +int main() { |
| 10 | + int server_socket; |
| 11 | + char buffer[256]; |
| 12 | + char hello_msg[256]; |
| 13 | + struct sockaddr_in server_address, client_address; |
| 14 | + // Creating a socket file descriptor |
| 15 | + if ( (server_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { |
| 16 | + printf("error: socket creation failed\n"); |
| 17 | + return -1; } |
| 18 | + // Filling server information |
| 19 | + server_address.sin_family = AF_INET; |
| 20 | + server_address.sin_addr.s_addr=inet_addr("127.0.0.1"); |
| 21 | + server_address.sin_port = htons(6000); |
| 22 | + // Bind the socket with the server address |
| 23 | + if ( bind(server_socket, (const struct sockaddr *)&server_address, |
| 24 | + sizeof(server_address)) < 0 ) |
| 25 | + { |
| 26 | + printf("error: bind failed\n"); |
| 27 | + return (-1); |
| 28 | + } |
| 29 | + int client_address_len = sizeof(client_address); |
| 30 | + int n; |
| 31 | + n = recvfrom(server_socket, (char *)buffer, 255, MSG_WAITALL, ( struct sockaddr |
| 32 | + *) &client_address, &client_address_len); |
| 33 | + buffer[n] = '\0'; |
| 34 | + printf("A message from a client: %s\n" , buffer); |
| 35 | + int val1,val2; |
| 36 | + sscanf(buffer,"%d%d",&val1,&val2); |
| 37 | + val1=val1+val2; |
| 38 | + sprintf(hello_msg, "%d",val1); |
| 39 | + sendto(server_socket, (const char *)hello_msg, strlen(hello_msg),MSG_CONFIRM, |
| 40 | + (const struct sockaddr *) &client_address, client_address_len); |
| 41 | + printf("done.\n"); |
| 42 | + return 0; |
| 43 | + } |
0 commit comments