Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите , не могу разобратсяс сокетами. / 8 сообщений из 8, страница 1 из 1
19.08.2007, 02:00:21
    #34736753
-zaraza-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
создается 2 сокета sock1, sock2 , биндятся

задача следующая организовать двухстороннюю передачу данных (этакий портмапинг)

пишу функцию

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
void portmap (int sp, int cp) {	   
    int l;
    char buff[ 512 ];
    fd_set r;

    while ( 1 )
    {	
	FD_SET (cp, &r);		
        FD_SET (sp, &r);
	
        select(sp+ 1 , &r, NULL, NULL, NULL); 
	if (FD_ISSET(cp, &r))
	{

	    l = read(cp, buff, sizeof(buff));   
	    write(sp, buff, l);			 
	}
	if (FD_ISSET(sp, &r))
	{
           l = read(sp, buff, sizeof(buff));    
	    write(cp, buff, l);                 
	}
    }
}


вызов функции соответственно
Код: plaintext
portmap(sock1,sock2)

результат данные идут в одну сторону из sock2 в sock1 в обратную никак
подозреваю что что то не так с select (убираю инструкцию - работает но криво , после заполнения буфера приходится посылать символ возврата каретки)

подскажите как поправить.
...
Рейтинг: 0 / 0
19.08.2007, 16:38:45
    #34737038
-zaraza-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
забыл добавить , работает все это под linux.
...
Рейтинг: 0 / 0
19.08.2007, 17:32:38
    #34737060
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
может стоит добавить
Код: plaintext
FD_ZERO(&r);
перед FD_SET
?
...
Рейтинг: 0 / 0
19.08.2007, 19:10:53
    #34737105
-zaraza-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
попробывал , хотя не надеялся увидеть результат.
данные из sock2 в sock1 передаются , обратно нет.
...
Рейтинг: 0 / 0
19.08.2007, 19:46:56
    #34737124
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
-zaraza-попробывал , хотя не надеялся увидеть результат.
данные из sock2 в sock1 передаются , обратно нет.

я почему-то думал, что FD_ZERO нужно писать обязательно, почему в
select(sp+1, &r, NULL, NULL, NULL);

в винде этот параметр игнорируется, а в никсах кажется там должно быть кол-во проверяемых сокетов, в данном случае 2
...
Рейтинг: 0 / 0
19.08.2007, 19:48:06
    #34737125
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
я бы попробовал подебажить этот код
...
Рейтинг: 0 / 0
19.08.2007, 20:21:32
    #34737151
-zaraza-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
спасибо всем кто откликнулся

проблему решил

Код: plaintext
select(sp+cp+ 1 , &r, NULL, NULL, NULL);

суть : дескриптор cp привышал значение sp+1 поэтому не слушался функцией select

Tubrik - сенкс , ты натолкнул на верную мысль )

только в select указываетися не колличество сокетов для прослушивания ,а верхний предел значения дескрипторов которые будут прослушиватся.
...
Рейтинг: 0 / 0
20.08.2007, 09:50:16
    #34737552
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите , не могу разобратсяс сокетами.
-zaraza-спасибо всем кто откликнулся

проблему решил

Код: plaintext
select(sp+cp+ 1 , &r, NULL, NULL, NULL);

суть : дескриптор cp привышал значение sp+1 поэтому не слушался функцией select

Tubrik - сенкс , ты натолкнул на верную мысль )

только в select указываетися не колличество сокетов для прослушивания ,а верхний предел значения дескрипторов которые будут прослушиватся.

Верхний +1, тое max +1.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите , не могу разобратсяс сокетами. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]