- 论坛徽章:
- 0
|
全部
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- const int port = 2628;
- int tcp_listen_socket(void);
- int main(int argc, char* argv[])
- {
- int sd, tmp_sd;
- struct sockaddr_in tmp_sin;
- unsigned int len;
- pid_t pid;
-
- sd = tcp_listen_socket();
- while(1) {
- tmp_sd = accept(sd, (struct sockaddr*)&tmp_sin, &len);
- if (tmp_sd == -1) {
- perror("accept");
- exit(0);
- }
-
- //check client ip
- //fork
- pid = fork();
- if (pid==0) _exit(0);
-
- close(tmp_sd);
- }
-
- return 0;
- }
- int tcp_listen_socket()
- {
- int sd;
- struct sockaddr_in sin;
- int ret;
-
- sd = socket(AF_INET, SOCK_STREAM, 0);
- if (sd == -1) {
- perror("socket");
- exit(0);
- }
-
- memset(&sin, 0, sizeof sin);
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = htonl(INADDR_ANY);
- sin.sin_port = htons(port);
- ret = bind(sd, (struct sockaddr*)&sin, sizeof sin);
- if (ret == -1) {
- perror("bind");
- exit(0);
- }
-
- ret = listen(sd, 20);
- if (ret == -1) {
- perror("listen");
- exit(0);
- }
-
- return sd;
- }
复制代码
有fork就错啊...我又没干什么事情...子进程直接退出了啊 |
|