![]() |
|
Модераторы: bsa |
![]()
|
|
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
knopka, если пишешь на С++, то можно сделать примерно так:
|
|||
|
||||
| knopka |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
to REZiaMIX
от сервера на сервере обработка эхом
стандартное построение классов Socket - ClientSocket - SimpleClientMain а в клиенте после приема ответ все поля у структуры а пустые |
||||
|
|||||
| knopka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
to bsa
не нашёл описания
я так понимаю преобразует тип поля в <char*>? а нельзя как то посимвольно перечитать структуру в вектор? (в смысле конвертировать) буду пробовать и этот вариант |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: 1 Всего: 4 |
А зачем посылать 3 инта отдельно?) -------------------- ![]() |
|||
|
||||
| REZiaMIX |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: 1 Всего: 4 |
Дабы закончить эту тему:
Сервер:
Клиент:
Писал на коленках , но компилируется и работает 100%. Клиент посылает 3 числа и строчку. Сервер увеличивает числа на 1 , меняет строчку и отвечает. -------------------- ![]() |
||||
|
|||||
| knopka |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
to REZiaMIX
спасибо только не пойму где компилить судя по
в винде, попробовал в CodeBlocks и в VisualStudio ошибки и ещё вопрос
почему два раза посылаем, сначала цифры а потом строку? Добавлено через 14 минут и 17 секунд to REZiaMIX Я Вас наверно уже достал ну ещё вопрос А в Linux есть альтернатива
|
||||||||
|
|||||||||
| REZiaMIX |
|
||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: 1 Всего: 4 |
conio.h используется для _getch(); можно заменить чемнить другим и избавиться от заголовка.
Т.к. string в данном случае в структуре - указатель на 0 символ строки. Если послать структуры целиком , то вместо строки пошлем указатель на нее , что не верно. Сначала посылаем 3 инта структуры(val1,val2,val3) + uint(len)
потом посылаем строку.
Наверное не правильный выход , но прокатит это:
Вообще в никсах посмотри описание WSAStartup и подгони тип данных. Это сообщение отредактировал(а) REZiaMIX - 19.11.2008, 12:10 -------------------- ![]() |
||||||||||||||||||
|
|||||||||||||||||||
| bsa |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
||||||||
|
|||||||||
| knopka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Большое спасибо to REZiaMIX и bsa очень помогли вопрос закрыт
|
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: 1 Всего: 4 |
Хм , ну если здесь пишем клиент , то выравнивание задать можем , значит можем быть уверенны) Вообще , нужно знать что нужно знать протокол клиент<->сервер , чтобы таких вопросов не возникало) Думаю в данном случае оба решения подойдут) -------------------- ![]() |
|||
|
||||
| knopka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
ДА оба подходят
|
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
все вышенаписанное для TCP соединения на прием работать НЕ БУДЕТ
т.к. фрагментация |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: 1 Всего: 4 |
Хм , поясни , у меня все работает как ни крути -------------------- ![]() |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Кстати, мой вариант работать точно не должен - в описании recv написано, что в случае если полученные данные не помещаются в буфер - излишек теряется. Таким образом действительно надо делать все через вектор...
|
|||
|
||||
| J0ker |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
ну просто пока везет данные, отправленные через TCP могут приходить как угодно фрагментированные, даже если были отправлены через send одним куском recv заполняет буфер только тем, что пришло на данный момент Добавлено через 1 минуту и 33 секунды
это верно только для UDP пакетов для TCP ничего не теряется Это сообщение отредактировал(а) J0ker - 21.11.2008, 18:50 |
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |