TCP server/client
#include
#include
#include
#include
#include
#include
#include
#include
void err_func(char *msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
int main(int argc, char **argv)
{
int sockfd, len, new_sockfd;
char buf[BUFSIZ];
struct sockaddr_in serv, clt;
socklen_t sin_siz;
unsigned short port;
if(argc != 3)
{
printf("usage: progname ip port\n");
exit(EXIT_FAILURE);
}
if((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
err_func("socket");
serv.sin_family = PF_INET;
port = (unsigned short)atoi(argv[2]);
serv.sin_port = htons(port);
inet_aton(argv[1], &(serv.sin_addr));
sin_siz = sizeof(struct sockaddr_in);
if(bind(sockfd, (struct sockaddr *)&serv, sin_siz) < 0)
err_func("bind");
if(listen(sockfd, SOMAXCONN) < 0)
err_func("listen");
while(1)
{
if((new_sockfd = accept(sockfd, (struct sockaddr *)&clt, &sin_siz)) < 0)
err_func("accept");
printf("connect from %s : %u\n", inet_ntoa(clt.sin_addr), ntohs(clt.sin_port));
memset(buf, 0, BUFSIZ);
while(strncmp(buf, "EXIT\r\n", 6) != 0 && strncmp(buf, "EXIT\n", 5) != 0)
{
len = recv(new_sockfd, buf, BUFSIZ, 0);
buf[len] = '\0';
printf("<- %s", buf);
len = send(new_sockfd, buf, len, 0);
}
close(new_sockfd);
}
close(sockfd);
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
void err_func(char *msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
int main(int argc, char **argv)
{
int sockfd, len;
char buf[BUFSIZ];
struct sockaddr_in serv;
unsigned short port;
if(argc != 3)
{
printf("usage: progname serv_ip serv_port\n");
exit(EXIT_FAILURE);
}
if((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
err_func("socket");
serv.sin_family = PF_INET;
port = (unsigned short)atoi(argv[2]);
serv.sin_port = htons(port);
inet_aton(argv[1], &(serv.sin_addr));
if(connect(sockfd, (struct sockaddr *)&serv, sizeof(struct sockaddr_in)) < 0)
err_func("connect");
do
{
printf("-> ");
fgets(buf, BUFSIZ, stdin);
len = strlen(buf);
len = send(sockfd, buf, len, 0);
len = recv(sockfd, buf, len, 0);
buf[len] = '\0';
printf("<- %s\n", buf);
}while(strncmp(buf, "EXIT\r\n", 6) != 0 && strncmp(buf, "EXIT\n", 5) != 0);
close(sockfd);
return 0;
}