Tcpechoserver Threads
Tcpechoserver Threads
Tcpechoserver Threads
Client:
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<pthread.h>
void str_cli(int);
int sockfd;
int port;
scanf("%d",&port);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
str_cli(sockfd); /* do it all */
exit(0);
int bytes_received,i;
for( ; ; )
pthread_create(&tid,NULL,copyto,NULL);
recv_data[bytes_received]='\0';
printf("received data=%s",recv_data);
//fflush(stdout); close(sockfd);
return;
char send_data[1024];
char recv_data[1024];
int i,bytes_received;
//fflush(stdout);
scanf(" %s",send_data);
send(sockfd,send_data,strlen(send_data),0);
}
Server:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <time.h>
#include <sys/wait.h>
#include<signal.h>
#include<pthread.h>
void str_echo(int);
int main( )
socklen_t clilen;
pthread_t tid;
struct sockaddr_in cliaddr, servaddr;
scanf("%d",&port);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(port);
listen(listenfd, 5);
fflush(stdout);
for ( ; ; )
clilen = sizeof(cliaddr);
iptr=malloc(sizeof(int));
pthread_create(&tid,NULL,&doit,iptr);
exit(0);
}
static void *doit(void *arg)
int connfd;
free(arg);
pthread_detach(pthread_self());
str_echo(connfd);
close(connfd);
char recv_data[1024],send_data[1024];
int i,bytes_received;
while(1)
again:
for( ; ;)
else if (bytes_received<0)
fflush(stdout);
return;