0% found this document useful (0 votes)
23 views14 pages

Network Programming

Uploaded by

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

Network Programming

Uploaded by

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

Write a c program to implement client/server program using tcp

sockets.
daytime_server.c:
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib") // Link with Winsock library
#define PORT 9091
#define SERVER_IP "127.0.0.1"
#define BUFFER_SIZE 512

int main() {
WSADATA wsa;
SOCKET sock;
struct sockaddr_in server_addr;
char buffer[BUFFER_SIZE];

printf("Initializing Winsock...\n");
if (WSAStartup(MAKEWORD(2,2), &wsa) != 0) {
printf("Failed. Error Code : %d\n", WSAGetLastError());
return 1;
}

// Create socket
if((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("Could not create socket : %d\n", WSAGetLastError());
WSACleanup();
return 1;
}
printf("Socket created.\n");

// Prepare sockaddr_in structure


server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);

// Connect to server
if(connect(sock, (struct sockaddr *)&server_addr,
sizeof(server_addr)) < 0) {
printf("Connect error: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
printf("Connected to server.\n");

// Send message to server


char *message = "Hello from client!";
if(send(sock, message, strlen(message), 0) == SOCKET_ERROR) {
printf("Send failed: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}

// Receive reply from server


int recv_size = recv(sock, buffer, BUFFER_SIZE - 1, 0);
if(recv_size == SOCKET_ERROR) {
printf("Failed to receive data: %d\n", WSAGetLastError());
} else if (recv_size == 0) {
printf("Connection closed by server.\n");
} else {
buffer[recv_size] = '\0'; // null terminate
printf("Received from server: %s\n", buffer);
}

// Cleanup
closesocket(sock);
WSACleanup();
return 0;
}
daytime_client.c:
#include <stdio.h>
#include <string.h>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib") // Link with Winsock library

#define PORT 9091


#define SERVER_IP "127.0.0.1"
#define BUFFER_SIZE 512

int main() {
WSADATA wsa;
SOCKET sock;
struct sockaddr_in server_addr;
char buffer[BUFFER_SIZE];

printf("Initializing Winsock...\n");
if (WSAStartup(MAKEWORD(2,2), &wsa) != 0) {
printf("Failed. Error Code : %d\n", WSAGetLastError());
return 1;
}

// Create socket
if((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("Could not create socket : %d\n", WSAGetLastError());
WSACleanup();
return 1;
}
printf("Socket created.\n");

// Prepare sockaddr_in structure


server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);

// Connect to server
if(connect(sock, (struct sockaddr *)&server_addr,
sizeof(server_addr)) < 0) {
printf("Connect error: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
printf("Connected to server.\n");

// Send message to server


char *message = "Hello from client!";
if(send(sock, message, strlen(message), 0) == SOCKET_ERROR) {
printf("Send failed: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}

// Receive reply from server


int recv_size = recv(sock, buffer, BUFFER_SIZE - 1, 0);
if(recv_size == SOCKET_ERROR) {
printf("Failed to receive data: %d\n", WSAGetLastError());
} else if (recv_size == 0) {
printf("Connection closed by server.\n");
} else {
buffer[recv_size] = '\0'; // null terminate
printf("Received from server: %s\n", buffer);
}

// Cleanup
closesocket(sock);
WSACleanup();
return 0;
}
Compile:
Terminal-1
gcc daytime_server.c -o prog.exe -lws2_32
./prog.exe
Terminal-2
gcc daytime_client.c -o prog1.exe -lws2_32
./prog1.exe

2.write a TCP client/server program in which client send three


numbers to the server in a single message. Server returns sum
difference and product as a result single message. Client program
should print the results appropriately
mserver.c:
#include <stdio.h>
#include <winsock2.h>
#include <string.h>

#pragma comment(lib, "ws2_32.lib")

#define PORT 8082


#define BUFFER_SIZE 1024

int main() {
WSADATA wsa;
SOCKET server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
int client_len = sizeof(client_addr);
char buffer[BUFFER_SIZE];

// Initialize Winsock
printf("Initializing Winsock...\n");
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("WSAStartup failed. Error Code: %d\n",
WSAGetLastError());
return 1;
}

// Create socket
if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) ==
INVALID_SOCKET) {
printf("Socket creation failed. Error: %d\n", WSAGetLastError());
WSACleanup();
return 1;
}

// Setup address
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT);
// Bind
if (bind(server_socket, (struct sockaddr *)&server_addr,
sizeof(server_addr)) == SOCKET_ERROR) {
printf("Bind failed. Error: %d\n", WSAGetLastError());
closesocket(server_socket);
WSACleanup();
return 1;
}

// Listen
listen(server_socket, 1);
printf("Server listening on port %d...\n", PORT);

// Accept connection
client_socket = accept(server_socket, (struct sockaddr
*)&client_addr, &client_len);
if (client_socket == INVALID_SOCKET) {
printf("Accept failed. Error: %d\n", WSAGetLastError());
closesocket(server_socket);
WSACleanup();
return 1;
}
printf("Client connected.\n");
// Receive data
int recv_size = recv(client_socket, buffer, BUFFER_SIZE - 1, 0);
if (recv_size == SOCKET_ERROR) {
printf("Receive failed. Error: %d\n", WSAGetLastError());
} else {
buffer[recv_size] = '\0';
int a, b, c;
sscanf(buffer, "%d %d %d", &a, &b, &c);

int sum = a + b + c;
int diff = a - b - c;
int prod = a * b * c;

// Prepare result message


char result[BUFFER_SIZE];
snprintf(result, sizeof(result), "Sum: %d, Difference: %d, Product:
%d", sum, diff, prod);

// Send result
send(client_socket, result, strlen(result), 0);
printf("Processed and sent result: %s\n", result);
}
// Cleanup
closesocket(client_socket);
closesocket(server_socket);
WSACleanup();

return 0;
}

nclient.c:
#include <stdio.h>
#include <winsock2.h>
#include <string.h>

#pragma comment(lib, "ws2_32.lib")

#define SERVER_IP "127.0.0.1"


#define PORT 8082
#define BUFFER_SIZE 1024

int main() {
WSADATA wsa;
SOCKET sock;
struct sockaddr_in server_addr;
char buffer[BUFFER_SIZE];
// Initialize Winsock
printf("Initializing Winsock...\n");
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("WSAStartup failed. Error Code: %d\n",
WSAGetLastError());
return 1;
}
// Create socket
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("Socket creation failed. Error: %d\n", WSAGetLastError());
WSACleanup();
return 1;
}
// Setup server address
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
// Connect
if (connect(sock, (struct sockaddr *)&server_addr,
sizeof(server_addr)) < 0) {
printf("Connection failed. Error: %d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return 1;
}
printf("Connected to server.\n");
// Input 3 numbers
int x, y, z;
printf("Enter three integers separated by space: ");
scanf("%d %d %d", &x, &y, &z);

// Send numbers to server


snprintf(buffer, sizeof(buffer), "%d %d %d", x, y, z);
send(sock, buffer, strlen(buffer), 0);

// Receive result
int recv_size = recv(sock, buffer, BUFFER_SIZE - 1, 0);
if (recv_size > 0) {
buffer[recv_size] = '\0';
printf("Received from server: %s\n", buffer);
} else {
printf("Failed to receive response from server.\n");
}
// Cleanup
closesocket(sock);
WSACleanup();
return 0;
}

Compilation:
Terminal1:
gcc mserver.c -o server.exe -lws2_32
./server.c
Client connected.
Processed and sent result: Sum: 15, Difference: -13, Product: 45
Terminal2:
gcc nclient.c -o client.exe -lws2_32
./client.exe
“Enter three integers separated by space: 1 5 9”
Terminal1:
“after client run successfully the server output is”
Client connected.
Processed and sent result: Sum: 15, Difference: -13, Product: 45

You might also like