>Помогите пожалуйста!!!!!!!!!
>Проблема такая! При запуске откомпелированной программы она зависает на listen(sServerListen,2)
>Что делать я не знаю попробуй для начала обнулить структуру localaddr, посмотри получится?
>
>#include<sys/socket.h>
>#include <sys/types.h>
>#include<string.h>
>#include<netinet/in.h>
>#include<netdb.h>
>#include<memory.h>
>#include<stdio.h>
>#include<curses.h>
>#include <arpa/inet.h>
>#include<pthread.h>
>#include<unistd.h>
>
>pthread_t p_thread;
>pthread_attr_t attr;
>
>
>
>void * ClientThread(void *data)
>{
>int sock=(int)data;
>char szSendBuff[1024],szRecvBuff[1024];
>int ret;
>printf(" Поток был успешно создан\n");
>while(1)
> {
> ret=recv(sock,szRecvBuff,1024,0);
> if (ret=0) break;
> else if (ret == -1) {printf("Ошибка при получении
>данных в потоке\n"); break;}
> printf(szRecvBuff,"\n");
> strcpy(szSendBuff,szRecvBuff);
> if (ret=send(sock,szSendBuff,sizeof(szSendBuff),0)==-1) break;
> }
> }
>
>int main ()
> {
> int sServerListen,sClient;
> int sock,iSize;
> struct sockaddr_in localaddr,clientaddr;
> sServerListen=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
> if (sServerListen==-1)
> {
> printf("\Ошибка в создании соккета\n");
> return(1);
> }
memset(&localaddr, (int)0, (size_t)sizeof(localaddr));
> localaddr.sin_addr.s_addr=htonl(INADDR_ANY);
> localaddr.sin_family=AF_INET;
> localaddr.sin_port=htons(3010);
> if (bind(sServerListen,(struct sockaddr*)&localaddr,sizeof(localaddr))==-1)
> {
> close(sServerListen);
> printf("Ошибка при привязке соккета к локальному адресу\n");
> return(1);
> }
> printf("\nПривязка к локальному адресу произошла успешно\n");
> if (listen(sServerListen,2)==-1) // ВОТ СДЕСЬ ОН И ЗАВИСАЕТ
>
> {
> close(sServerListen);
> printf("ошибка при прослушивание соккета\n");
> return(1);
> }
> printf("прослушивание порта началось");
> while (1)
> {
> iSize=sizeof(clientaddr);
> printf("цикл");
> if (sClient=accept(sServerListen,(struct sockaddr *)
>&clientaddr,(socklen_t *)&iSize)==-1)
> {
> close(sServerListen);
> printf("Ошибка при создантт дочернего сокета\n");
> return(1);
> }
> else printf("дочерний процесс должен создаться");
> }
> void *s;
> s=&sClient;
> pthread_create(&p_thread,NULL,ClientThread,s);
> close(sServerListen);
> return 0;
> }
>
>
>Задача программы принять сигнал,отобразить его на экране и отправить обратно