The OpenNET Project / Index page

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

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

"Socket в качестве сервера"
Сообщение от Brick emailИскать по авторуВ закладки(??) on 04-Май-04, 22:57  (MSK)
Написал сервер с сокетом, но чё-то всё не так, как надо идёт:
Сервер должен сначало получать от клиента запрос, после получения такового он соответсвенно ему выдаёт нужную инфу клиенту, трудность заключается в том, как сделать так, чтобы клиенту каждый раз не надо было отсоедниняться и в любой момент можно было получить информацию???

вот часть кода:
.......................
for ( ; ; ) {

if((client_so = accept(server_so, (struct sockaddr*)&client_address, (socklen_t *)&sock_size)) == -1) {
shutdown(server_so, 0);
printf("Can't ACCEPT connection\n");
return -1;
}
else {


char buf[NET_BUF_SIZE];

//Get action
recv(client_so, buf, NET_BUF_SIZE, 0);

//Send number of records
char n[NET_BUF_SIZE];
int nums = baseNums();
sprintf(n, "%i", nums);
send(client_so, n, NET_BUF_SIZE, 0);

switch(atoi(buf)) {

case GET_IP:

for (int i = 1; i <= nums; i++) {
baseRead(i, IP, buf);
send(client_so, buf, NET_BUF_SIZE, 0);
}

break;

case GET_ACCESS:

for (int i = 1; i <= nums; i++) {
baseRead(i, ACCESS, buf);
send(client_so, buf, NET_BUF_SIZE, 0);
}

break;

}
}

}

shutdown(server_so, 2);

........................

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

 Оглавление

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

1. "Socket в качестве сервера"
Сообщение от XMan Искать по авторуВ закладки(??) on 04-Май-04, 23:53  (MSK)
В простейшем случае - fork. В родителе закрываешь новое соединение и возвращаешься на прослушивание. В потомке в цикле общаешься, пока соединение не будет закрыто тобой или им.

PS. Заодно узнаешь, как от зомби избавляться :)

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

2. "Socket в качестве сервера"
Сообщение от Brick emailИскать по авторуВ закладки(??) on 05-Май-04, 11:00  (MSK)
>В простейшем случае - fork. В родителе закрываешь новое соединение и возвращаешься
>на прослушивание. В потомке в цикле общаешься, пока соединение не будет
>закрыто тобой или им.
>
>PS. Заодно узнаешь, как от зомби избавляться :)


Тоесть получается в цыкл нужно ещё загонять и обмен сообщениями, но как тогда проверить не отсоединился ли клиет?

И куда припхнуть этот fork??? ;)))

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

3. "Socket в качестве сервера"
Сообщение от Faust Искать по авторуВ закладки(ok) on 06-Май-04, 09:27  (MSK)
>>В простейшем случае - fork. В родителе закрываешь новое соединение и возвращаешься
>>на прослушивание. В потомке в цикле общаешься, пока соединение не будет
>>закрыто тобой или им.
>>
>>PS. Заодно узнаешь, как от зомби избавляться :)
>
>
>Тоесть получается в цыкл нужно ещё загонять и обмен сообщениями, но как
>тогда проверить не отсоединился ли клиет?
>
>И куда припхнуть этот fork??? ;)))


пачитай маны по fork он толька разделяєт працес.
тоєсть от так
           |
          / \
         1    2
         |    |
тепер ани 2 различниє процесси. Икогда ти папробуєш записать в
закририй сокет он тебе скажет))))
он может вилетать по таймауту то сматри.

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

4. "Socket в качестве сервера"
Сообщение от Brick emailИскать по авторуВ закладки(??) on 06-Май-04, 18:07  (MSK)
Как использовать fork я так и не понял, но с select вроде всё идёт ;)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

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




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

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