The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"сокет - Сервер не слышит клиента"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"сокет - Сервер не слышит клиента"
Сообщение от dek emailИскать по авторуВ закладки on 24-Мрт-04, 17:35  (MSK)
Приветствую всех!
Вроде все делал по доке, но клиент с сервером не соединяется. Пишу на С под FreeBSD.
Вот программа-сервер:
main (int argc, char *argv[]) {
  int servAddrLen;
  char host_addr[16];
  char msg[100], comm[100], buff[8192];
  struct sockaddr_in serv_addr;

      bzero(&serv_addr, sizeof(serv_addr));

      serv_addr.sin_family          = AF_INET;
      serv_addr.sin_addr.s_addr     = INADDR_LOOPBACK;
      serv_addr.sin_port            = htons (tcp_port);

      if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
        print_error();
      else  {
        #ifdef DEBUG
            fprintf(stderr, "Сокет создан\n");
        #endif
      }

      servAddrLen=sizeof(serv_addr);
      bind (sockfd, (struct sockaddr *) &serv_addr, sizeof(servAddrLen));
      if (listen (sockfd, 10)<0) {
         fprintf(stderr, "Error listen\n");
         exit(-1);
      }
      while ((accSock=accept(sockfd, (struct sockaddr *) &serv_addr, &(servAddrLen)))) {
        if (accSock > 0) write (accSock, "Call received", 20);
      }
}

А вот клиент:
main (int argc, char *argv[]) {
  char host_addr[16];
  char msg[100], comm[100], buff[8192], data;
  struct sockaddr_in serv_addr;
  int i;

      sprintf(host_addr, "127.0.0.1");
      bzero(&serv_addr, sizeof(serv_addr));

      serv_addr.sin_family          = AF_INET;
      serv_addr.sin_addr.s_addr     = inet_addr (host_addr);
      serv_addr.sin_port            = htons (tcp_port);

      if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
            print_error();
      else  {
            #ifdef DEBUG
                    fprintf(stderr, "Сокет создан\n");
            #endif
      }

      if(connect(sockfd, (struct sockaddr *)  &serv_addr, sizeof(serv_addr)) < 0) {
            print_error();
            close(sockfd);
      }
      else {
            #ifdef DEBUG
                    fprintf(stderr, "Связь с сервером создана\n");
            #endif
      }
      while (1) {
        if ((i=recv(sockfd, &buff, 20, 0))<0) {
            fprintf(stderr, "Error recv\n");
            exit(0);
        }
        buff[i]='\0';
        printf ("Получено: %s\n", buff);
      }
}


Буду благодарен тому кто подскажет в чем проблема.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "сокет - Сервер не слышит клиента"
Сообщение от black_pokemon Искать по авторуВ закладки on 25-Мрт-04, 01:50  (MSK)
>>      serv_addr.sin_family      
>    = AF_INET;
>      serv_addr.sin_addr.s_addr     =
>INADDR_LOOPBACK;
>      serv_addr.sin_port      
>      = htons (tcp_port);
>

че за tcp_port ???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "сокет - Сервер не слышит клиента"
Сообщение от dek emailИскать по авторуВ закладки on 25-Мрт-04, 11:28  (MSK)
>>>      serv_addr.sin_family      
>>    = AF_INET;
>>      serv_addr.sin_addr.s_addr     =
>>INADDR_LOOPBACK;
>>      serv_addr.sin_port      
>>      = htons (tcp_port);
>>
>
>че за tcp_port ???

Да, забыл - там в обоих программах перед main () - #define tcp_port 1700

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "сокет - Сервер не слышит клиента"
Сообщение от dek emailИскать по авторуВ закладки on 25-Мрт-04, 14:48  (MSK)
>>>>      serv_addr.sin_family      
>>>    = AF_INET;
>>>      serv_addr.sin_addr.s_addr     =
>>>INADDR_LOOPBACK;
>>>      serv_addr.sin_port      
>>>      = htons (tcp_port);
>>>
>>
>>че за tcp_port ???
>
>Да, забыл - там в обоих программах перед main () - #define
>tcp_port 1700

И еще вопрос - тип сокета (блокирующий или неблокирующий) у клиента и сервера должен совпадать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "сокет - Сервер не слышит клиента"
Сообщение от Macovey Искать по авторуВ закладки on 25-Мрт-04, 15:23  (MSK)
Мож ipfw мешает :))))
и такое бывало....
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "сокет - Сервер не слышит клиента"
Сообщение от gt emailИскать по авторуВ закладки on 25-Мрт-04, 16:13  (MSK)
>>>>>      serv_addr.sin_family      
>>>>    = AF_INET;
>>>>      serv_addr.sin_addr.s_addr     =
>>>>INADDR_LOOPBACK;
>>>>      serv_addr.sin_port      
>>>>      = htons (tcp_port);
>>>>
>>>
>>>че за tcp_port ???
>>
>>Да, забыл - там в обоих программах перед main () - #define
>>tcp_port 1700
>
>И еще вопрос - тип сокета (блокирующий или неблокирующий) у клиента и
>сервера должен совпадать?

нет, не должен

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "сокет - Сервер не слышит клиента"
Сообщение от black_pokemon Искать по авторуВ закладки on 25-Мрт-04, 17:48  (MSK)
воопщем откомпилировалю клиент соединяется через 1 минуту после запуска :) никогда такого не видел... а так sockstat выдает что сервер слушает совсем не на том порте что указаню и телнет на этот порт выдает вполне ожидаемый результат (в нашем случае Call received) .. вообщем ни хрена не понятна.... говорила мама на адвоката иди учись... эээх...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "сокет - Сервер не слышит клиента"
Сообщение от dek emailИскать по авторуВ закладки on 26-Мрт-04, 10:58  (MSK)
>воопщем откомпилировалю клиент соединяется через 1 минуту после запуска :) никогда такого
>не видел... а так sockstat выдает что сервер слушает совсем не
>на том порте что указаню и телнет на этот порт выдает
>вполне ожидаемый результат (в нашем случае Call received) .. вообщем ни
>хрена не понятна.... говорила мама на адвоката иди учись... эээх...

А прикол-то в том, что ошибка в bind - должно быть
bind (sockfd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr));

Большое спасибо, black_pokemon, не знал про sockstat - полезная штука

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру