#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);
}