int main(int argc, char const *argv[])
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0)
{
perror("sock err\n");
return -1;
}
printf("sock success\n");
struct sockaddr_in shiny, acc;
shiny.sin_addr.s_addr = inet_addr(argv[1]);
shiny.sin_family = AF_INET;
shiny.sin_port = htons(atoi(argv[2]));
int len = sizeof(shiny);
if (bind(sock, (struct sockaddr *)&shiny,len) < 0)
{
perror("bind err\n");
return -1;
}
printf("bind success\n");
if (listen(sock, 6) < 0)
{
perror("listen err\n");
return -1;
}
printf("listenn ok\n");
#define N 64
char buf[N];
while (1)
{
int accfd = accept(sock, (struct sockaddr *)&acc, &len);
if (accfd < 0)
{
perror("accfd er\n");
return -1;
}
pid_t pid;
pid = fork();
if (pid == 0) /// son
{
while (1)
{
memset(buf, 0, N);
int ret = read(accfd, buf, N);
if (ret > 0)
{
printf("%d:%s\n", accfd, buf);
}
else if (ret == 0)
{
printf("%d:quit\n", accfd);
}
else
{
perror("readn err\n");
break;
}
}
exit(0);
}
else if (pid > 0) // fu
{
close(accfd);
}
}
close(sock);
return 0;
}