0% found this document useful (0 votes)
2 views18 pages

Socket Programmin

The document contains code for four different network applications: UDP_Time, TCP_Echo, UDP_Echo, and TCP_Time. Each application includes both server and client code, demonstrating how to create sockets, send and receive messages, and handle errors. The examples illustrate the use of UDP and TCP protocols for time retrieval and echoing messages between a client and server.

Uploaded by

sancharim2233
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views18 pages

Socket Programmin

The document contains code for four different network applications: UDP_Time, TCP_Echo, UDP_Echo, and TCP_Time. Each application includes both server and client code, demonstrating how to create sockets, send and receive messages, and handle errors. The examples illustrate the use of UDP and TCP protocols for time retrieval and echoing messages between a client and server.

Uploaded by

sancharim2233
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Q1.

UDP_Time

SERVER
Code:-

#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<time.h>
time_t ticks;
int main()
{
struct sockaddr_in serv_addr, cli_addr;

int skfd, r, s, cli_addr_len;

int short serv_port = 25020; /*port number to be used by the server*/

char serv_ip[] = “127.0.0.1”; /* server’s IP address*/

char buff[128]; /*buffer for sending and receiving messages */

/*initializing server socket address structure with zero values*/

bzero(&serv_addr, sizeof(serv_addr));

/*filling up the server socket address structure with appropriate


values*/

serv_addr.sin_family = AF_INET; /*address family*/

serv_addr.sin_port = htons(serv_port); /*port number*/

inet_aton(serv_ip,(&serv_addr.sin_addr)); /*IP address*/

printf("\n UDP TIME SERVER.\n");


/*creating socket*/

if((skfd= socket(AF_INET,SOCK_DGRAM,0)) < 0)

printf("\n SERVER ERROR: cannot create socket.\n");

exit(1);

/*binding server socket address structure*/

if((bind(skfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0)

{
printf("\n SERVER ERROR: Cannot Bind\n");

close(skfd);

exit(1);

for( ; ; )

/*server waits, till client sends any message to be received*/

printf("\n SERVER: Waiting for client...Press Ctrl + c to stop


server:\n");

cli_addr_len = sizeof(cli_addr);

if((r = recvfrom(skfd, buff, 128, 0, (struct sockaddr*)&cli_addr,

&cli_addr_len)) < 0)

printf("\n SERVER: Cannot receive");

close(skfd);

exit(1);

buff[r] = '\0';

ticks = time(NULL);

snprintf(buff, 128, “%s”, ctime(&ticks));

if((s = sendto(skfd, buff, 128, 0, (struct sockaddr*)&cli_addr,

cli_addr_len)) < 0)

printf(“\n SERVER ERROR: Cannot send.\n”);

close(skfd);

exit(1);

printf(“\n SERVER: Message send to client %s: %s.\n” ,

inet_ntoa(cli_addr.sin_addr, buff); /*sent s bytes to


client*/

}//for ends

}//main ends
CLIENT
Code:-
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<time.h>
time_t ticks;
int main()
{
struct sockaddr_in serv_addr;

int skfd, r, s, serv_addr_len;

int short serv_port = 25020; /*port number used by server*/

char serv_ip[] = “127.0.0.1”; /*server’s IP address*/

char buff[128]; /*buffer for sending and receiving messages*/

/* initializing server socket address structure with zero values*/

bzero(&serv_addr, sizeof(serv_addr));

/* filling up the server socket address structure with appropriate


values*/

serv_addr.sin_family = AF_INET; // address family

serv_addr.sin_port = htons(serv_port); // port number

inet_aton(serv_ip, (&serv_addr.sin_addr)); // IP address

printf(“\n UDP TIME CLIENT.\n”);

/*creating socket*/

if((skfd= socket(AF_INET, SOCK_DGRAM,0)) < 0)

printf("\n CLIENT ERROR: Cannot create socket.\n");

exit(1);

/*sending message to the echo server*/

if((s = sendto(skfd, buff, 128, 0, (struct sockaddr*)&serv_addr,

sizeof(serv_addr))) < 0)
{

printf(“\n CLIENT ERROR: Cannot send.\n”);

close(skfd);

exit(1);

serv_addr_len = sizeof(serv_addr);

if((r = recvfrom(skfd, buff, 128, 0, (struct sockaddr*)&serv_addr,

&serv_addr_len)) < 0)

printf(“\n CLIENT ERROR: Cannot receive.\n”);

close(skfd);

exit(1);

rbuff[r] = ‘\0’;

/*received ‘r’ bytes from server*/

printf(“\n CLIENT: Time received from server: %s.\n “,buff);

close(skfd);

exit(1);

}// main ends


}

Output:

Q2. TCP_Echo
Server

Code:

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
struct sockddr_in serv_addr, cli_addr;
int listenfd, connfd r, w, cli_aadr_len, val;
unsigned short serv_port= 25020; /* port number to be used by the
server*/
char serv_ip [] = “127.0.0.1”; /* server’s IP-address */
char buff [128]; /* buffer for sending and receiving messages*/
int main()
{
/* initializing server socket address structure with zero values
*/

bzero (&serv_addr, sizeof(serv_addr));

/*filling up the server socket address structure with appropriate


values*/

serv_addr.sin_family = AF_INET; /*address family*/

serv_addr.sin_port = htons(serv_port); /*port number*/

inet_aton(serv_ip, (&serv_addr.sin_addr)); /*IP-address*/

printf(“\n TCP ECHO SERVER \n”);

/*creating socket*/

if(( listenfd = socket(AF_INET, SOCK_STREAM, 0 )) <0)

printf(“\n SERVER ERROR: Cannot create socket. \n”);

exit(1);

/*binding server socket address structure*/


if(( bind(listenfd, (struct sockaddr*)&serv_addr,
sizeof(serv_addr))) < 0)

printf("\n SERVER ERROR: Cannot bind\n");

close(listenfd);

exit(1);

/*listen to client connection requests*/

if((listen(listenfd,5)) < 0)

printf(“\n SERVER ERROR: Cannot listen \n ”);

close(listenfd);

exit(1);

cli_addr_len = sizeof(cli_addr);

for(; ;)

printf(“\n SERVER: Listening for clients…… Press Cntrl + C


to stop echo server. \n”);

/*accept client connections */

if((connfd = accept (listenfd, (struct sockaddr*)&cli_addr,


&cli_addr_len)) < 0)

printf(“\n SERVER ERROR: Cannot accept client


connections. \n ”);

close(listenfd);

exit(1);

printf(“\n SERVER: Connection from client %s accepted. \n”,


inet_ntoa(cli_addr.sin_addr));

/*waiting for messages from client*/

if(( r = read (connfd, buff, 128)) < 0)

printf(“\n SERVER ERROR: Cannot receive message from client.


\n”);
else

buff[r] = ‘\0’;

/*echo back the messages received from client*/

if(( w = write(connfd, buff, 128)) < 0 )

printf(“\n SERVER ERROR: Cannot send message to


the client \n”);

else

printf(“\n SERVER: Echoed back to %s to %s \n”, buff,


inet_ntoa(cli_addr.sin_addr));

} /* for ends */

} /* main ends */

CLIENT
Code:-
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
struct sockddr_in serv_addr;
int skfd, r, w;
unsigned short serv_port= 25020; /*port number used by the server*/
char serv_ip[]= “127.0.0.1”; /*server’s IP-address*/
char rbuff [128]; /*buffer for receiving messages*/
char sbuff [128] = “HELLO SERVER”; /*buffer for sending messages*/
int main ()
{
/*initializing server socket address structure with zero values*/
bzero(&serv_addr, sizeof(serv_addr));

/*filling up the server socket address structure with appropriate


values*/
serv_addr.sin_family = AF_INET; /*address family*/

serv_addr.sin_port = htons(serv_port); /*port number*/

inet_aton(serv_ip, (&serv_addr.sin_addr)); /*IP-address*/

printf(“\n TCP ECHO CLIENT \n”);

/*creating socket*/

if(( skfd = socket(AF_INET, SOCK_STREAM, 0 )) <0)

printf(“\n SERVER ERROR: Cannot create socket. \n”);

exit(1);

/*request server for a connection*/

if(( connect(skfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0


)

printf(“\n CLIENT ERROR: Cannot connect to the server \n”);

close(skfd);

exit(1);

printf(“\n CLIENT: Connected to the server. \n”);

/*send a message to the echo server*/

if(( w = write(skfd, sbuff, 128)) < 0 )

printf(“\n CLIENT ERROR: Cannot send messages to the echo server


\n ”);

close(skfd);

exit(1);

printf(“\n CLIENT: Message sent to echo server \n”);

/*read back the echoed message from server*/

if (( r = read(skfd, rbuff, 128)) < 0 )

printf(“\n CLIENT ERROR: Cannot receive message from server. \n”);

else

{
rbuff[r] = ‘\0’;

/*print the received message on console*/

printf(“\n CLIENT: Message from echo server: %s \n”, rbuff );

close(skfd);

exit(1);

} /*main ends */

Output:

Q3. UDP_Echo

SERVER
Code:-

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>

struct sockaddr_in serv_addr, cli_addr;


int sockfd, r, w, cli_addr_len;
unsigned short serv_port = 25020;
char serv_ip[] = "127.0.0.1";
char buff[256];

int main() {
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(serv_port);
inet_aton(serv_ip, &serv_addr.sin_addr);

printf("\n UDP ECHO SERVER \n");

if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {


printf("\n SERVER ERROR: Cannot create socket. \n");
exit(1);
}

if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {


printf("\n SERVER ERROR: Cannot bind\n");
close(sockfd);
exit(1);
}

printf("\n SERVER: Listening for clients… Press Cntrl + C to stop echo server. \n");

for (;;) {
cli_addr_len = sizeof(cli_addr);
r = recvfrom(sockfd, buff, 256, 0, (struct sockaddr*)&cli_addr, &cli_addr_len);
if (r < 0) {
printf("\n SERVER ERROR: Cannot receive message from client. \n");
continue;
}

buff[r] = '\0';
printf("\n SERVER: Received message '%s' from %s\n", buff, inet_ntoa(cli_addr.sin_addr));

w = sendto(sockfd, buff, r, 0, (struct sockaddr*)&cli_addr, cli_addr_len);


if (w < 0)
printf("\n SERVER ERROR: Cannot send message to the client \n");
else
printf("\n SERVER: Echoed back '%s' to %s \n", buff, inet_ntoa(cli_addr.sin_addr));
}

close(sockfd);
return 0;
}

CLIENT
Code:-

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>

struct sockaddr_in serv_addr;


int skfd, r, w, serv_addr_len;
unsigned short serv_port = 25020;
char serv_ip[] = "127.0.0.1";
char rbuff[256];
char sbuff[256];

int main() {
bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(serv_port);
inet_aton(serv_ip, &serv_addr.sin_addr);

printf("\n UDP ECHO CLIENT \n");


printf("\n Enter Message \n");
scanf("%[^\n]s", sbuff);

if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {


printf("\n CLIENT ERROR: Cannot create socket. \n");
exit(1);
}

serv_addr_len = sizeof(serv_addr);

w = sendto(skfd, sbuff, strlen(sbuff), 0, (struct sockaddr*)&serv_addr, serv_addr_len);


if (w < 0) {
printf("\n CLIENT ERROR: Cannot send message to the echo server \n");
close(skfd);
exit(1);
}
printf("\n CLIENT: Message sent to echo server \n");

r = recvfrom(skfd, rbuff, 256, 0, (struct sockaddr*)&serv_addr, &serv_addr_len);


if (r < 0) {
printf("\n CLIENT ERROR: Cannot receive message from server. \n");
} else {
rbuff[r] = '\0';
printf("\n CLIENT: Message from echo server: %s \n", rbuff);
}

close(skfd);
return 0;
}
Output:

Q4. TCP_Time

SERVER
Code:-

#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<time.h>

time_t ticks;

int main()
{
struct sockaddr_in serv_addr, cli_addr;
int skfd, cli_fd, r, cli_len;
int short serv_port = 25020;
char serv_ip[] = "127.0.0.1";
char buff[128];

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(serv_port);
inet_aton(serv_ip, (&serv_addr.sin_addr));

printf("\n TCP TIME SERVER.\n");

// creating TCP socket


if ((skfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("\n SERVER ERROR: Cannot create socket.\n");
exit(1);
}

if ((bind(skfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0)


{
printf("\n SERVER ERROR: Cannot bind.\n");
close(skfd);
exit(1);
}

if ((listen(skfd, 5)) < 0)


{
printf("\n SERVER ERROR: Cannot listen.\n");
close(skfd);
exit(1);
}

printf("\n SERVER: Waiting for client...Press Ctrl + C to stop server.\n");

while (1)
{
cli_len = sizeof(cli_addr);

if ((cli_fd = accept(skfd, (struct sockaddr*)&cli_addr, (socklen_t*)&cli_len)) < 0)


{
printf("\n SERVER ERROR: Cannot accept.\n");
close(skfd);
exit(1);
}

ticks = time(NULL);
snprintf(buff, sizeof(buff), "%s", ctime(&ticks));

write(cli_fd, buff, strlen(buff));

printf("\n SERVER: Time sent to client %s:%d - %s",


inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port), buff);

close(cli_fd);
}

close(skfd);
return 0;
}
CLIENT
Code:-

#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{
struct sockaddr_in serv_addr;
int skfd, r;
int short serv_port = 25020;
char serv_ip[] = "127.0.0.1";
char buff[128];

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(serv_port);
inet_aton(serv_ip, (&serv_addr.sin_addr));

printf("\n TCP TIME CLIENT.\n");

if ((skfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)


{
printf("\n CLIENT ERROR: Cannot create socket.\n");
exit(1);
}

if ((connect(skfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0)


{
printf("\n CLIENT ERROR: Cannot connect to server.\n");
close(skfd);
exit(1);
}

r = read(skfd, buff, sizeof(buff) - 1);


if (r < 0)
{
printf("\n CLIENT ERROR: Cannot receive.\n");
close(skfd);
exit(1);
}

buff[r] = '\0';
printf("\n CLIENT: Time received from server: %s\n", buff);

close(skfd);
return 0;
}

Output:

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy