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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TCP - можно ли поменят местами клиент и север 
V
    Опции темы
neosapient
Дата 6.10.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Простите за глупый вопрос, но ...
Делаю TCP сокеты - сервер и клиент
Вот исходник
Короче можно ли что бы было так
Код

SERVER  CLIENT    ANALYS
----------------------- Нормальный в моем понимании виток
        Send      Клиент отсылает серверу сообщение
Get               Сервер принимает сообщение от клиента
Send              Сервер отсылает ответ клиенту
        Get       Клиент принимает ответ от сервера

----------------------- Интересующий меня виток
Send              Сервер отсылает сообщение клиенту
        Get       Клиент принимает сообщение от сервера
        Send      Клиент отсылает серверу ответ 
Get               Сервер принимает ответ от клиента

Вообще решил написать морской бой, но вот я думаю как две программы будут общаться?
Поправьте мой исходник


Это сообщение отредактировал(а) neosapient - 6.10.2006, 20:03
PM MAIL   Вверх
ptr
Дата 7.10.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



neosapient, а что смущает то?


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
neosapient
Дата 7.10.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так в моем примере, Первый случай работает нормально, а во Втором клиент в ответ от сервера получает мусор...  smile 
Можешь поправить мой пример или привести свой, чтоб был реализован этот протокол.  smile 
PM MAIL   Вверх
ptr
Дата 7.10.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



TestTCPServer.cpp:
Код

sServerListen = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

Наверное всё же IPPROTO_TCP.

TestTCPClient.cpp:
Код

void TCPGet(char * buf, int len){...}
void TCPSend(char * buf, int len){...}
DWORD WINAPI ClientThread(LPVOID lpParam)
{
    char buf[80];
    ...
    TCPGet(buf,80);
    ...
}

Не хорошо передавать и  использовать указатель на локальную переменную.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
neosapient
Дата 7.10.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Наверное всё же IPPROTO_TCP.

Спасибо, за подсказку, но все равно что то не так...
Сервер
user posted image
Клиент
user posted image

Это сообщение отредактировал(а) neosapient - 7.10.2006, 18:50
PM MAIL   Вверх
ptr
Дата 8.10.2006, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Цитата(neosapient @  7.10.2006,  22:45 Найти цитируемый пост)
Спасибо, за подсказку, но все равно что то не так...

Я бы удивился, если бы всё стало нормально smile .

Я уже написал, что не так - надо память выделять динамически. На клиенте:
Код

char* buf=new char[80];

на сервере:
Код

char *szRecvBuff=new char[1024], *szSendBuff=new char[1024];



--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
neosapient
Дата 8.10.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Заработало,  smile , спасибо,  smile 
Только, почему раньше был баг, ведь я передаю указатель на массив - то есть память в массиве выделена, я думал сокет должен перетирать старое новым  smile 
Можно пояснить...   smile 
PM MAIL   Вверх
ptr
Дата 9.10.2006, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Что-то я однако погорячился smile . Проблема не с памятью.
 
На сервере ты делаешь так:
Код

        ret = TCPSend(szSendBuff,sizeof(szSendBuff));

при этом посылается весь буфер в 1024 байт с мусором. А на клиенте получается 80 байт.

Это сообщение отредактировал(а) ptr - 10.10.2006, 12:25


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
neosapient
Дата 9.10.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, кажется теперь разобрался.  smile 

А на вопрос 
Цитата

можно ли поменят местами TCP-клиент и TCP-север

Ответ: можно

Тему закрываю

Добавлено @ 18:22 
PTR, большое спасибо.
И впреть расчитываю на вашу помощь.

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Цитата(neosapient @  9.10.2006,  22:20 Найти цитируемый пост)
PTR, большое спасибо.И впреть расчитываю на вашу помощь.

Пожалуйста. Будут вопросы - спрашивай.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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