Skip to content

Commit 3e38dec

Browse files
committed
q2_UDP_server
1 parent 58966df commit 3e38dec

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

lab6_question2_server.c

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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

Comments
 (0)