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

Поиск:

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


Опытный
**


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

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



Допустим есть структура
Код

struct Mystr
{
int pole1;
float pole2;
char  pole3;
} exz_struct;


exz_struct.pole1=11;
exz_struct.pole2=5.77;
exz_struct.pole3=”a”;

Подскажите пож-та программно smile  как мне наипростейшим способом из программы-сервера передать указанную выше структуру данных по TCP/IP – протоколу, а в программе-клиенте – принять эту информацию, вывести ее на экран и послать какой-либо ответ (например просто “1”) на сервер???
Почитал в Qt-книге  про класс QTcpSocket, но что-то я совсем в этих сетях заплутал…
помогите пож-та – очень буду благодарен…..

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


Опытный
**


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

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



socket() connect() send()
socket() bind() listen() accept() recv()

гуглите эти функции.
PM MAIL   Вверх
gordmiand
Дата 27.8.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Abyx: дя я не только по гуглу смотрел эти функции, но и по книге, но все равно толком не разобрался - в сетях только-только начинаю делать первые шаги....накидайте хотя бы  приблизительный наипростейший примерчик для отсылки-приема указанной выше структуры данных - я буду очень обязан Вам...мне это в Qt надо сделать - я так понимаю с использованием класса QTcpSocket???
PM MAIL   Вверх
djamshud
Дата 27.8.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



http://www.hiraeth.com/alan/tutorials/tcpi...IP-complete.pdf

Вкратце. Но в идеале нужно читать Стивенса "Unix Network Programming". После этого можно писать хоть на Qt, хоть на дотнете.

Добавлено через 3 минуты и 47 секунд
К тому же, насколько я знаю, большая часть сетевой инфраструктуры винды была честно взята из FreeBSD. И комментарий Abyx , который виндузятник, это частично подтверждает: перечисленные им функции - часть POSIX и BSD.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
gordmiand
Дата 27.8.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud: 
во-первых Ваша ссылка выдает "404 File not found"
во-вторых - мне надо под винду написать такой обмен, у меня есть такая рабочая программа, но под линуксом - в ней используются файлы sys/socket.h, sys/ioctl.h и arpa/inet.h, которых нет в винде…на какие виндовые файлы-аналоги мне можно заменить указанные выше файлы или как быть вообще? 

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


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



http://www.hiraeth.com/alan/tutorials/tcpip/tcpip.html

Попробуйте эту. Там ссылка на pdf. Если не откроется, проблема в ваших интернетах.

>на какие виндовые файлы-аналоги мне можно заменить указанные выше файлы или как быть вообще?

Abyx перечислил вам названия функций, почему бы не обратиться к документации msdn?

Добавлено через 35 секунд
Но у вас вообще нет понимания сетей, поэтому нужно читать Стивенса.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 27.8.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А вообще по хорошему надо использовать boost.asio .
Но вы его не осилите.
PM MAIL   Вверх
SVN74
Дата 27.8.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Для Вас лучший вариант -  "Самоучитель игры на WINSOCK"
http://citforum.ru/book/cook/winsock.shtml
PM MAIL WWW   Вверх
gordmiand
Дата 27.8.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud: у меня в линукс-проге тоже используются все функциии, перечисленные Abyx-ом выше - просто я не могу разобраться с этими 3 файлами из системной include-папки линукса...должны же быть их аналоги и в винде... 
PM MAIL   Вверх
djamshud
Дата 27.8.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



gordmiand, google: msdn connect -> http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx
Это документация. Там даже пример есть. Неужели так сложно?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
gordmiand
Дата 27.8.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



djamshud  smile ...а сложно подправить имеющуюся у меня линукс-прогу под винды, учитывая, что в первой используются естес-но все теже функции connect, bind  и т.д.? вся загвоздка в этих 3 линукс-инклудниках smile .... 


Это сообщение отредактировал(а) gordmiand - 27.8.2010, 22:50
PM MAIL   Вверх
djamshud
Дата 27.8.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



gordmiand, думайте.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
gordmiand
Дата 27.8.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile 
djamshud: а если я Вам покажу файлы проги - Вы сможете мне более предметно помочь? ведь знающему человеку это одна (две) минута smile ... 
PM MAIL   Вверх
Abyx
Дата 28.8.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



gordmiand, вам надо в центр помощи.
PM MAIL   Вверх
boostcoder
Дата 28.8.2010, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата

А вообще по хорошему надо использовать boost.asio

ессно! это единственное перспективное направление.

вот. даже проверил smile 
Код

#include <boost/asio.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <iostream>
#include <fstream>

/***************************************************************************/

struct Mystr {
   int pole1;
   float pole2;
   char  pole3;
};

/***************************************************************************/

namespace boost { namespace serialization {

template<typename archive_t>
void serialize(archive_t& ar, Mystr& o, unsigned int) {
   ar & o.pole1
      & o.pole2
      & o.pole3;
}

} }

/***************************************************************************/

int main() {
using boost::asio::ip::tcp;

   const char* ip = "127.0.0.1";
   const char* port = "3400";
   
   Mystr str = {33, 3, '6'};
   try {
      std::stringstream ss;
      { boost::archive::binary_oarchive(ss) << str; }

      boost::asio::io_service ios;
      tcp::socket sock(ios);

      boost::system::error_code error = boost::asio::error::host_not_found;
      sock.connect(boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::from_string(ip), port), error);
      { (error) ? throw boost::system::system_error(error) : 0; }

      boost::asio::write(sock, boost::asio::buffer(ss.str()),
         boost::asio::transfer_all(), error
      );
   } catch (const boost::system::system_error& e) {
      std::cout << "(std::exception): " << e.what() << std::endl;
      return 1;
   }

   return 0;
}

/***************************************************************************/



Это сообщение отредактировал(а) boostcoder - 29.8.2010, 18:44
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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