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