Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Client

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>

#define PORT 65432


#define BUFFER_SIZE 1024

int main() {
WSADATA wsa;
SOCKET client_socket;
struct sockaddr_in server_addr;
int roll_number;
char buffer[BUFFER_SIZE] = {0};

// Initialize Winsock
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("WSAStartup failed.\n");
return 1;
}

// Create socket
if ((client_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
printf("Socket creation failed.\n");
return 1;
}

// Set up server address


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

// Connect to server
if (connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
printf("Connection failed.\n");
return 1;
}

// Get input from user


printf("Enter roll number: ");
scanf("%d", &roll_number);

// Send roll number to server


send(client_socket, (char *)&roll_number, sizeof(roll_number), 0);
// Receive name from server
recv(client_socket, buffer, BUFFER_SIZE, 0);
printf("Name corresponding to roll number %d: %s\n", roll_number, buffer);

// Close the connection


closesocket(client_socket);

// Cleanup
WSACleanup();

return 0;
}

Server
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>

#define PORT 65432


#define BUFFER_SIZE 1024

// Function to get name based on roll number


char* get_name(int roll_number) {
// Dummy implementation, replace with your own logic
if (roll_number == 101)
return "Chinmoy";
else if (roll_number == 102)
return "Bob";
else if (roll_number == 103)
return "Charlie";
else
return "Unknown";
}

int main() {
WSADATA wsa;
SOCKET server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
int addr_len = sizeof(client_addr);
int roll_number;
char *name;
char buffer[BUFFER_SIZE] = {0};

// Initialize Winsock
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
printf("WSAStartup failed.\n");
return 1;
}

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

// Set up server address


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

// Bind socket
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) ==
SOCKET_ERROR) {
printf("Bind failed.\n");
return 1;
}

// Listen for incoming connections


if (listen(server_socket, 3) == SOCKET_ERROR) {
printf("Listen failed.\n");
return 1;
}

printf("Server is listening for connections...\n");

// Accept incoming connection


if ((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &addr_len)) ==
INVALID_SOCKET) {
printf("Accept failed.\n");
return 1;
}

printf("Connected by %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

// Receive roll number from client


recv(client_socket, (char *)&roll_number, sizeof(roll_number), 0);
printf("Received roll number: %d\n", roll_number);

// Get name based on roll number


name = get_name(roll_number);

// Send name to client


send(client_socket, name, strlen(name), 0);
// Close the connection
closesocket(client_socket);
closesocket(server_socket);

printf("Connection closed.\n");

// Cleanup
WSACleanup();

return 0;
}

You might also like