#include "unp.h"
int main(int argc, char **argv)
{
int listenfd, connfd;
struct sockaddr_in servaddr;
if ((listenfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
err_sys("socket");
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(13);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(listenfd, (SA *)&servaddr, sizeof(servaddr)) == -1)
err_sys("bind");
else if (listen(listenfd, LISTENQ) == -1)
err_sys("listen");
struct sockaddr_in cliaddr; /* client address */
socklen_t clilen = sizeof(cliaddr);
char cliip[INET_ADDRSTRLEN];
for (;;) {
if ((connfd = accept(listenfd, (SA *)&cliaddr, &clilen )) == -1)
err_sys("accept");
/* output client IP information */
if (inet_ntop(AF_INET, &cliaddr.sin_addr, cliip, sizeof(cliip)) == NULL)
err_sys("inet_ntop");
printf("Client IP information: %s port:%d/n", cliip, ntohs(cliaddr.sin_port));
......................................
if (close(connfd) == -1)
err_sys("close");
}
return 0;
}
int main(int argc, char **argv)
{
int listenfd, connfd;
struct sockaddr_in servaddr;
if ((listenfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
err_sys("socket");
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(13);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(listenfd, (SA *)&servaddr, sizeof(servaddr)) == -1)
err_sys("bind");
else if (listen(listenfd, LISTENQ) == -1)
err_sys("listen");
struct sockaddr_in cliaddr; /* client address */
socklen_t clilen = sizeof(cliaddr);
char cliip[INET_ADDRSTRLEN];
for (;;) {
if ((connfd = accept(listenfd, (SA *)&cliaddr, &clilen )) == -1)
err_sys("accept");
/* output client IP information */
if (inet_ntop(AF_INET, &cliaddr.sin_addr, cliip, sizeof(cliip)) == NULL)
err_sys("inet_ntop");
printf("Client IP information: %s port:%d/n", cliip, ntohs(cliaddr.sin_port));
......................................
if (close(connfd) == -1)
err_sys("close");
}
return 0;
}