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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заданный номер порта для передачи ответа клиенту 
:(
    Опции темы
russki
Дата 25.12.2004, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди, нужна помощь.
Кто сталкивался, как заранее задать номер порта по которому будет отсылаться ответ клиенту.
На серваках будут стоять firewall'ы (разные) нужно заранее открыть порты для ответа клиенту
Заранее благодарен



PM MAIL   Вверх
Mad
Дата 25.12.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 3
Всего: 19



Ну так в чем проблемма ? smile
Береш любой порт, а потом говориш админам что твоя прога его использует (чтоб не закрывали smile ).

И если речь идет о TCP (а не о UDP) то то ответ посылаеш по томуже socket-у, что и пришел запрос smile


--------------------
user posted image
PM MAIL   Вверх
russki
Дата 25.12.2004, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



SOCKADDR_IN sockaddr, cliaddr;
int fromlen = sizeof(sockaddr);
SOCKET sock = socket(AF_INET,SOCK_STREAM,0);

sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.S_un.S_addr = INADDR_ANY;
sockaddr.sin_port = htons(53000);
int bindres = bind(sock,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR_IN));
if (bindres) return FALSE;
listen(sock,5);

while (1){
SOCKET sockcli = accept(sock,(SOCKADDR*)&cliaddr,&fromlen);

DWORD thr;
CreateThread(NULL,0,pThis->CFileOperationThread,&sockcli,0,&thr);
}

короче, попытался я передать клиенту 2 байта (номер полученного порта) после accept через sock, а send вернул -1, хотя connect вернул 0, и через sockcli идет дальнейший обмен. smile

Если можешь с исходником скинь smile

PM MAIL   Вверх
Mad
Дата 27.12.2004, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 3
Всего: 19



Цитата(russki @ 25.12.2004, 20:22)
while (1){
SOCKET sockcli = accept(sock,(SOCKADDR*)&cliaddr,&fromlen);

DWORD thr;
CreateThread(NULL,0,pThis->CFileOperationThread,&sockcli,0,&thr);
}

Тут у тебя ошибка.
Ты передаеш указатель на локальную переменную (строго говоря, в потоке она будет не определенна).
Попробуй так.
Код

while (1)
{
   SOCKET sockcli = accept(sock,(SOCKADDR*)&cliaddr,&fromlen);

   DWORD thr;
   CreateThread(NULL,0,pThis->CFileOperationThread,sockcli,0,&thr);
}




--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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