Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
apsrcreatix
GitHub Repository: apsrcreatix/Socket-Programming-With-C
Path: blob/master/06-half-duplex-chat-tcp-ip/server.c
137 views
1
/*
2
* Title : Half duplex server side
3
* Name : Aditya Pratap Singh Rajput
4
* Subject : Network Protocols And Programming using C
5
*
6
Note : please consider the TYPOS in comments.
7
Thanks.
8
*/
9
10
#include "stdio.h"
11
#include "stdlib.h"
12
#include "string.h"
13
//headers for socket and related functions
14
#include <sys/types.h>
15
#include <sys/socket.h>
16
//for including structures which will store information needed
17
#include <netinet/in.h>
18
#include <unistd.h>
19
//for gethostbyname
20
#include "netdb.h"
21
#include "arpa/inet.h"
22
#define MAX 1000
23
#define BACKLOG 5 // how many pending connections queue will hold
24
int main()
25
{
26
char serverMessage[MAX];
27
char clientMessage[MAX];
28
//create the server socket
29
int socketDescriptor = socket(AF_INET, SOCK_STREAM, 0);
30
31
32
struct sockaddr_in serverAddress;
33
serverAddress.sin_family = AF_INET;
34
serverAddress.sin_port = htons(9002);
35
serverAddress.sin_addr.s_addr = INADDR_ANY;
36
37
//calling bind function to oir specified IP and port
38
bind(socketDescriptor, (struct sockaddr*)&serverAddress, sizeof(serverAddress));
39
40
listen(socketDescriptor, BACKLOG);
41
42
//starting the accepting
43
int clientSocketDescriptor = accept(socketDescriptor, NULL, NULL);
44
45
while (1)
46
{
47
printf("\ntext message here .. :");
48
scanf("%s", serverMessage);
49
send(clientSocketDescriptor, serverMessage, sizeof(serverMessage) , 0);
50
//recieve the data from the server
51
recv(clientSocketDescriptor, &clientMessage, sizeof(clientMessage), 0) ;
52
//recieved data from the server successfully then printing the data obtained from the server
53
printf("\nCLIENT: %s", clientMessage);
54
55
}
56
//close the socket
57
close(socketDescriptor);
58
return 0;
59
}
60
61