| Цитата(bsa @ 15.5.2006, 17:54) | | Код | socket_fd = socket(PF_INET, SOCK_STREAM, 0); sockaddr_in sa_name; sa_name.sin_family = AF_INET; sa_name.sin_port = 12345; sa_name.sin_addr = 0x00000000; bind(socket_fd, (struct sockaddr*)&sa_name, SIN_LEN(&sa_name) ); listen(socket_fd, 99999); cl_socket = accept(socked_fd, 0, 0); |
|
Ну а если ты так откроешь сокет то если вдруг ты будешь использовать много процесорность и процес создавший такой сокет упадёт. Nulf придеться ждать ну около 5 минут пока сокет закроеться..... тоесть быстренько ребутнуть твоего демона не удасться ..... мой совет использовать чють по другому использовать | Код | int lfd = 0; struct linger on; struct sockaddr_in german_socket; struct sockaddr *sp;
sp = (struct sockaddr *)&german_socket; lfd = socket(AF_INET,SOCK_STREAM,0); f (lfd == -1) { printf("cannot open remote socket"); }
german_socket.sin_family = AF_INET; german_socket.sin_addr.s_addr = htonl(INADDR_ANY); // Значит что будет слушать все айпишники german_socket.sin_port = htons(8080); // На порту 8080 setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)); // А ето добавлено для удобства =))
while (bind(lfd,sp,sizeof(german_socket))==-1) { printf("Cannot bind port will sleep ~ 15 sec\n"); sleep(15); }
if (listen(lfd,1024) == -1) { printf("cannot listen remote port"); exit(0); }
|
|