Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Segmentation fault (core dumped), Help!!!!!!!!!! 
:(
    Опции темы
Leksey
Дата 22.4.2005, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Уже несколько часов сижу над простенькой программкой и не могу найти ошибку.
Программа ожидает подключения по введенному порту и как только оно происходит вылетает :Segmentation fault (core dumped)
Код

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>

int main(int argc,char **argv)
{
 if (argc!=2) { printf("Usage:%s port\n",argv[0]); return 1;}
  int    n   = atoi(argv[1]);
  if (n<=0|n>66666) 
{
printf("Wrong parameters.\n");
 printf("use \"%s\" command without parameters for help.\n",argv[0]); 
return 2;

 hostent *hp;
  sockaddr_in addr_in;
  sockaddr_in saddr_in;
  addr_in.sin_family=AF_INET;
  addr_in.sin_port=htons(n);
  addr_in.sin_addr.s_addr=INADDR_ANY;
  int s=socket(AF_INET,SOCK_STREAM,0);
  if (s<0) {perror("Can't open socket.");return -1;}
  if (bind(s,(sockaddr*)&addr_in,sizeof(sockaddr_in)))
 {perror("Can't bind socket!!!");close(s);return -1;}
  if (listen(s,1)) {perror("Can't start listen !!!");close(s);return -1;};
  hostent *hv;
  socklen_t addrlen=sizeof(sockaddr);
  while (1)
  {
   int s1=accept(s,(sockaddr*)&saddr_in,&addrlen);
   if (s1>=0)
   {
   hv=gethostbyaddr((char*)&saddr_in,sizeof(sockaddr_in),AF_INET);
   printf("Connection is accepted.Hostname:%s \n",hv->h_name);
   close(s1);
   }
   else 
   {
   perror("Can't accept connection");
   break;
   }
  }
  close(s);
  return 0;
}

Заранее ОГРОМНОЕ СПАСИБО.
PM MAIL   Вверх
Leksey
Дата 24.4.2005, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Кажется я нашел ошибку.
hv=gethostbyaddr((char*)&saddr_in,sizeof(sockaddr_in),AF_INET);
Надо было:

hv=gethostbyaddr((char*)&saddr_in.sin_addr,4,AF_INET);
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.