Unix network
programming
Practical file
Name : pandav kumar
Roll.no : 2k22/cs/58
Subject : unix network
programming
Course : b.sc (Hons) cS
Exam roll.no: 22013570037
Q1.Implement ECP Echo client and TCP Echo server(Iterative).
Server Code :
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
#define BUFFER_SIZE 1024
Int main() {
Int server_fd, client_fd;
Struct sockaddr_in address;
Char buffer[BUFFER_SIZE] = {0};
Server_fd = socket(AF_INET, SOCK_STREAM, 0);
Address.sin_family = AF_INET;
Address.sin_addr.s_addr = INADDR_ANY;
Address.sin_port = htons(PORT);
Bind(server_fd, (struct sockaddr*)&address,
sizeof(address));
Listen(server_fd, 5);
While (true) {
Socklen_t addr_len = sizeof(address);
Client_fd = accept(server_fd, (struct sockaddr*)&address,
&addr_len);
Int valread;
While ((valread = read(client_fd, buffer, BUFFER_SIZE)) >
0) {
Buffer[valread] = ‘\0’;
Send(client_fd, buffer, valread, 0);
}
Close(client_fd);
}
Close(server_fd);
Return 0;
}
Client code :
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
#define BUFFER_SIZE 1024
Int main() {
Int sock;
Struct sockaddr_in server_address;
Char buffer[BUFFER_SIZE], message[BUFFER_SIZE];
Sock = socket(AF_INET, SOCK_STREAM, 0);
Server_address.sin_family = AF_INET;
Server_address.sin_port = htons(PORT);
Server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”);
Connect(sock, (struct sockaddr*)&server_address,
sizeof(server_address));
While (true) {
Std::cin.getline(message, BUFFER_SIZE);
If (strcmp(message, “exit”) == 0) break;
Send(sock, message, strlen(message), 0);
Int valread = read(sock, buffer, BUFFER_SIZE);
Buffer[valread] = ‘\0’;
Std::cout << buffer << std::endl;
}
Close(sock);
Return 0;
}
Output
Q2.Implement TCP Echo client and TCP Echo server
(concurrent)
Server Code :
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#include <pthread.h>
#define PORT 8080
#define BUFFER_SIZE 1024
Void* handle_client(void* client_socket) {
Int client_fd = *(int*)client_socket;
Char buffer[BUFFER_SIZE];
Int valread;
While ((valread = read(client_fd, buffer, BUFFER_SIZE)) > 0)
Send(client_fd, buffer, valread, 0);
Close(client_fd);
Return nullptr;
}
Int main() {
Int server_fd, client_fd;
Struct sockaddr_in address;
Server_fd = socket(AF_INET, SOCK_STREAM, 0);
Address.sin_family = AF_INET;
Address.sin_addr.s_addr = INADDR_ANY;
Address.sin_port = htons(PORT);
Bind(server_fd, (struct sockaddr*)&address,
sizeof(address));
Listen(server_fd, 5);
While (true) {
Socklen_t addr_len = sizeof(address);
Client_fd = accept(server_fd, (struct sockaddr*)&address,
&addr_len);
Pthread_t thread;
Pthread_create(&thread, nullptr, handle_client,
&client_fd);
Pthread_detach(thread);
}
Close(server_fd);
Return 0;
}
Client code :
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
#define BUFFER_SIZE 1024
Int main() {
Int sock;
Struct sockaddr_in server_address;
Char buffer[BUFFER_SIZE], message[BUFFER_SIZE];
Sock = socket(AF_INET, SOCK_STREAM, 0);
Server_address.sin_family = AF_INET;
Server_address.sin_port = htons(PORT);
Server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”);
Connect(sock, (struct sockaddr*)&server_address,
sizeof(server_address));
While (true) {
Std::cin.getline(message, BUFFER_SIZE);
If (strcmp(message, “exit”) == 0) break;
Send(sock, message, strlen(message), 0);
Int valread = read(sock, buffer, BUFFER_SIZE);
Buffer[valread] = ‘\0’;
Std::cout << buffer << std::endl;
}
Close(sock);
Return 0;
}
Output
Q3 .Implement TCP daytime client and TCP daytime server
( iterative).
Server Code :
#include <iostream>
#include <ctime>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
Int main() {
Int server_fd, client_fd;
Struct sockaddr_in address;
Server_fd = socket(AF_INET, SOCK_STREAM, 0);
Address.sin_family = AF_INET;
Address.sin_addr.s_addr = INADDR_ANY;
Address.sin_port = htons(PORT);
Bind(server_fd, (struct sockaddr*)&address,
sizeof(address));
Listen(server_fd, 5);
While (true) {
Socklen_t addr_len = sizeof(address);
Client_fd = accept(server_fd, (struct sockaddr*)&address,
&addr_len);
Time_t now = time(0);
Std::string daytime = ctime(&now);
Send(client_fd, daytime.c_str(), daytime.length(), 0);
Close(client_fd);
}
Close(server_fd);
Return 0;
}
Client code :
#include <iostream>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
#define BUFFER_SIZE 1024
Int main() {
Int sock;
Struct sockaddr_in server_address;
Char buffer[BUFFER_SIZE];
Sock = socket(AF_INET, SOCK_STREAM, 0);
Server_address.sin_family = AF_INET;
Server_address.sin_port = htons(PORT);
Server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”);
Connect(sock, (struct sockaddr*)&server_address,
sizeof(server_address));
Int valread = read(sock, buffer, BUFFER_SIZE);
Buffer[valread] = ‘\0’;
Std::cout << buffer << std::endl;
Close(sock);
Return 0;
}
Output