Помогите пожалуйста!!!!!!!!!
Проблема такая! При запуске откомпелированной программы она зависает на listen(sServerListen,2)
Что делать я не знаю#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);
}
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;
}
Задача программы принять сигнал,отобразить его на экране и отправить обратно