#include<stdio.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<strings.h>
#include<string.h>
#include<unistd.h>
void str_echo(int sockfd)
{
char buffer[100];
int n;
memset(buffer, 0, 100);
while((n = read(sockfd, buffer, 100)) > 0)
{
buffer[n+1] = '\0';
printf("%s\n", buffer);
write(sockfd, buffer, n);
memset(buffer, 0, 100);
}
}
int main()
{
int listenfd, connfd;
struct sockaddr_in server_sockaddr, client_sockaddr;
socklen_t clientlen;
pid_t childpid;
if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Socket failed\n");
exit(EXIT_FAILURE);
}
bzero(&server_sockaddr, sizeof(server_sockaddr));
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(9877);
server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(listenfd, (struct sockaddr*)&server_sockaddr, sizeof(server_sockaddr)) == -1)
{
fprintf(stderr, "Bind failed\n");
exit(EXIT_FAILURE);
}
if(listen(listenfd, 5) == -1)
{
fprintf(stderr, "Listen faliled\n");
exit(EXIT_FAILURE);
}
for( ; ; )
{
clientlen = sizeof(client_sockaddr);
if((connfd = accept(listenfd, (struct sockaddr*)&client_sockaddr, &clientlen)) == -1)
{
fprintf(stderr, "Accept failed\n");
exit(EXIT_FAILURE);
}
if((childpid = fork()) == 0)
{
close(listenfd);
str_echo(connfd);
close(connfd);
exit(0);
}
close(connfd);
}
}
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<strings.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<arpa/inet.h>
void str_cli(int sockfd)
{
char sendline[100], recvline[100];
int n;
memset(sendline, 0, 100);
memset(recvline, 0, 100);
while(fgets(sendline, 100, stdin) != NULL)
{
write(sockfd, sendline , strlen(sendline));
memset(sendline, 0, 100);
read(sockfd, recvline, 100);
fputs(recvline, stdout);
memset(recvline, 0, 100);
}
}
int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in server_sockaddr;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Socket failed\n");
exit(EXIT_FAILURE);
}
bzero(&server_sockaddr, sizeof(server_sockaddr));
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(9877);
if(inet_pton(AF_INET, argv[1], &server_sockaddr.sin_addr) == -1)
{
fprintf(stderr, "inet_pton failed\n");
exit(EXIT_FAILURE);
}
if(connect(sockfd, (struct sockaddr*)&server_sockaddr, sizeof(server_sockaddr)) == -1)
{
fprintf(stderr, "Connect failed\n");
exit(EXIT_FAILURE);
}
str_cli(sockfd);
exit(0);
}