L1F21BSCS0463 Lab8
L1F21BSCS0463 Lab8
L1F21BSCS0463
Task1:
#include<pthread.h>
#include<stdio.h>
#include<unistd.h>
void *printdetails(void *arg)
{
printf("Name: Bakahtawar Shahid\n");
printf("Registration Number:L1F21BSCS0463\n");
pthread_exit(NULL);
}
int main()
{
pthread_t thread;
pthread_create(&thread,NULL,&printdetails,NULL);
pthread_join(thread,NULL);
return 0;
}
TASK2:
#include <stdio.h>
#include <pthread.h>
return NULL;
}
int main()
{
char *name = “Bakhtawar Shahid";
char *rollNo = "L1F21BSCS0463";
pthread_t t1;
void *args[2] = {name, rollNo};
return 0;
}
TASK3:
CLIENT CODE:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <netinet/in.h>
while (1) {
memset(buffer, 0, sizeof(buffer));
fgets(buffer, MAXLINE, stdin);
send(sockfd, buffer, strlen(buffer), 0);
if (strcmp(buffer, "exit\n") == 0) {
break;
}
}
return NULL;
}
while (1) {
memset(buffer, 0, sizeof(buffer));
int n = recv(sockfd, buffer, sizeof(buffer), 0);
if (n <= 0) {
break;
}
printf("%s", buffer);
}
return NULL;
}
int main() {
int sockfd;
char buffer[MAXLINE];
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
close(sockfd);
return 0;
}
Server CODE:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <netinet/in.h>
struct Client {
int socket_fd;
struct sockaddr_in address;
};
char buffer[MAXLINE];
// Send client IP and port
char client_info[MAXLINE];
sprintf(client_info, "Client IP: %s, Port: %d\n", inet_ntoa(client-
>address.sin_addr), ntohs(client->address.sin_port));
send_message(sockfd, client_info);
// Receive response
recv(sockfd, buffer, MAXLINE, 0);
if (strcmp(buffer, "Yes\n") == 0) {
// Repeat the process
} else {
// Close connection
close(sockfd);
printf("Connection with client %s closed.\n", inet_ntoa(client-
>address.sin_addr));
client->socket_fd = -1; // Mark client slot as available
}
return NULL;
}
int main() {
int sockfd;
struct sockaddr_in servaddr, cliaddr;
pthread_t tid;
memset(&servaddr, 0, sizeof(servaddr));
memset(&cliaddr, 0, sizeof(cliaddr));
while (1) {
int len, new_sockfd;
write(1, wait_new_client, strlen(wait_new_client));
int clientLength = sizeof(cliaddr);
new_sockfd = accept(sockfd, (struct sockaddr*)&cliaddr,
&clientLength); // accept request from TCP client
close(sockfd);
return 0;
}