реклама на сайте
подробности

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> TCP или UDP?, Подскажите способ реализации
blackfin
сообщение Jan 18 2008, 09:01
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Aprox @ Jan 18 2008, 11:21) *
Необходимо напомнить, что я имею ввиду локальные сети в промышленной и научно-технической сферах.
Причем сети, построенные исключительно с помощью хабов, а они уже, насколько мне известно, являются большой редкостью.

Цитата(Aprox @ Jan 18 2008, 11:21) *
Типичное для таких сетей - один клиент и много серверов.
Если сеть со временем меняет топологию или расширяется, рано или поздно возникнет ситуация когда два клиента попытаются обратиться к одному серверу.

Цитата(Aprox @ Jan 18 2008, 11:21) *
В настоящий момент, единственное, что сдерживает применение Ethernet в таких сетях,- это избыточные навороты с протоколами и TCP/IP стеками.
ИМХО, ничто не сдерживает применение Ethernet Internet'a в таких сетях, ибо никакой избыточности в TCP/IP нет.
Может, есть недостаток ресурсов выбранного МК, но это вопрос грамотности разработчика.

Цитата(Aprox @ Jan 18 2008, 11:21) *
Мне представляется, переход к Raw-пакетам в данном случае выглядит разумным.
Мне, напротив, это кажется неразумным, но нужно ли спорить о вкусах? sad.gif
Go to the top of the page
 
+Quote Post
GL_basik
сообщение Jan 18 2008, 09:09
Сообщение #47


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 19-07-06
Пользователь №: 18 918



Если есть время сначала создавать устройство, потом писать под него софт, а потом под устройство подстраивать топологию сети, тогда можно использовать все что угодно. Но времени обычно нет. А обычно есть сеть и есть информационная система, которая собирает данные о состоянии сети. Соотвественно при проектировании устройства нужно ориентироваться на стандартные протоколы. Чтоб монтажник мог придти в подъезд обжать кабель подключить девайс и уйти, а дейвайс сам бы себя сконфигурил и вписался в информационную систему. Здесь уж RAW пакетами не обойтись...
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jan 18 2008, 16:13
Сообщение #48


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(blackfin @ Jan 18 2008, 12:01) *
Причем сети, построенные исключительно с помощью хабов, а они уже, насколько мне известно, являются большой редкостью.


Делаю распределенную систему на базе свитча, но не хаба. К свитчу пока нареканий нет.

Цитата
Если сеть со временем меняет топологию или расширяется, рано или поздно возникнет ситуация когда два клиента попытаются обратиться к одному серверу.


После того, как система сдана и запущена в работу на промышленном производстве, заказчик костьми ляжет, но не допустит никаких смен топологии. Расширение же производится установкой другого свитча, с большим числом портов. При этом появление новых клиентов в сети недопустимо, т.к. означает смену топологии. Заказчик против.

Цитата
ИМХО, ничто не сдерживает применение Ethernet Internet'a в таких сетях, ибо никакой избыточности в TCP/IP нет.
Может, есть недостаток ресурсов выбранного МК, но это вопрос грамотности разработчика.


Как показывает обсуждение в данном треде, и в ряде других на форуме, разработчики активно ищут пути не использовать стандартные решения TCP/IP. Потому, что для целей простого приборостроения этот стек протоколов дает большие накладные расходы по софту и быстродействию. Можно смириться с избыточностью софта и подобрать нужный МК, но поднять скорость передачи данных, увеличить загрузку сети, практически невозможно.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jan 19 2008, 10:38
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Aprox @ Jan 18 2008, 19:13) *
Делаю распределенную систему на базе свитча, но не хаба. К свитчу пока нареканий нет.

Switch, конечно, тоже будет работать, но ограничение на максимальное кол-во хостов в Вашей локальной сети остается - максимум 96 хостов. Возможно, в Вашем конкретном случае это не проблема. rolleyes.gif

Цитата(Aprox @ Jan 18 2008, 19:13) *
При этом появление новых клиентов в сети недопустимо, т.к. означает смену топологии. Заказчик против.

Новые клиенты могут появиться, если пользователь запустит несколько экземпляров браузера на одном компьютере.. Что тогда?

Цитата(Aprox @ Jan 18 2008, 19:13) *
Можно смириться с избыточностью софта и подобрать нужный МК, но поднять скорость передачи данных, увеличить загрузку сети, практически невозможно.

Согласен, если число пакетов в секунду велико, а размер каждого пакета мал, переход к RAW-ethernet пакетам может дать существенный выигрыш в производительности сети.. Но стоит ли рассчитывать на устойчивую работу сети на пределе производительности?

Кроме того, при использовании switch'а лишенного внутреннего буфера для хранения пакетов могут появиться проблемы с коллизиями пакетов в сегменте switch<->PC. Как следствие - потеря пакетов и т.д. и т.п.

Впрочем, насколько мне известно, Вы эту проблему уже обсуждали: подключение устройства к ethernet. wink.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 19 2008, 13:46
Сообщение #50


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
но ограничение на максимальное кол-во хостов в Вашей локальной сети остается - максимум 96 хостов


Это откуда такое ограничение?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jan 19 2008, 17:23
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Rst7 @ Jan 19 2008, 16:46) *
Это откуда такое ограничение?
А что, существуют switch'и на большее число портов?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 19 2008, 18:27
Сообщение #52


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А что, существуют switch'и на большее число портов?


А что, соединить два или более свичей - это уже не одна сеть?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jan 20 2008, 16:29
Сообщение #53


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(blackfin @ Jan 19 2008, 13:38) *
Новые клиенты могут появиться, если пользователь запустит несколько экземпляров браузера на одном компьютере.. Что тогда?

Да, на такую возможность следует заложиться. Hапример, ограничить число подключений к серверу одной штукой.
Цитата
Согласен, если число пакетов в секунду велико, а размер каждого пакета мал, переход к RAW-ethernet пакетам может дать существенный выигрыш в производительности сети.. Но стоит ли рассчитывать на устойчивую работу сети на пределе производительности?

Именно это я и хочу проверить. Искал похожие примеры реализаций, но не нашел. Приходится самому.
Цитата
Кроме того, при использовании switch'а лишенного внутреннего буфера для хранения пакетов могут появиться проблемы с коллизиями пакетов в сегменте switch<->PC. Как следствие - потеря пакетов и т.д. и т.п.
Впрочем, насколько мне известно, Вы эту проблему уже обсуждали:

Да, сегмент switch<->PC предполагается делать на 1Г Ethernet. Такие свитчи имеются а продаже. Сейчас я не готов обсуждать, какие подводные камни ждут на этом пути. Будем пробовать, и набивать шишки.



Цитата(GL_basik @ Jan 18 2008, 12:09) *
Если есть время сначала создавать устройство, потом писать под него софт, а потом под устройство подстраивать топологию сети, тогда можно использовать все что угодно. Но времени обычно нет. А обычно есть сеть и есть информационная система, которая собирает данные о состоянии сети. Соотвественно при проектировании устройства нужно ориентироваться на стандартные протоколы. Чтоб монтажник мог придти в подъезд обжать кабель подключить девайс и уйти, а дейвайс сам бы себя сконфигурил и вписался в информационную систему. Здесь уж RAW пакетами не обойтись...

Полностью согласен- при наращивании уже готовой сети следует придерживаться тех протоколов и форматов, которые уже действуют в этой сети. Hо, когда система создается с нуля и поставляется в комплексе, то можно себе позволить некую свободу действий.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 8 2008, 13:22
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Привет всем!

Прочитал в теме про упоминание AJAX - если кто то занимался этим, может наставит на истинный путь. Задача у меня, как говорили выше, классическая. Управление девайсом через WEB-интерфейс. AJAX привлекает:

1. Малая нагрузка на контроллер со стороны Ethernet

2. Динамическое изменение данных на странице без ее перезагрузки.

Возможно у кого нибудь есть наработки по этой библиотеке. Пробовал работать с JsHTTPRequest - эта библа построенна на основе AJAX - но она заточена под крупные сервера с поддержкой PHP.


--------------------
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 8 2008, 13:42
Сообщение #55


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Возможно у кого нибудь есть наработки по этой библиотеке.


Наработок нет. Я смотрел, чего там происходит, вроде не особо сложно реализовать. Самого в принципе интересует, можем скооперироваться...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 8 2008, 13:51
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Rst7 @ Feb 8 2008, 20:42) *
Наработок нет. Я смотрел, чего там происходит, вроде не особо сложно реализовать. Самого в принципе интересует, можем скооперироваться...
Я , честно говоря, не сильно знаком с JavaScript - сложного там ничего нет, но не знание методов объектов и прочих фичей напрягает, потому как двигаю с нуля проект. Посмотрев на некоторые библиотеки, сделал вывод, что написать надо свою, компактную, потому как меньше 15 кБ не видел, да и те, как говорил выше заточенны под взаиможействие с РНР на серверной стороне... Вот счас грызу XMLHTTPRequest - это, по моему, основной объект, через который можно что то серверу послать.


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 8 2008, 15:46
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Все оказалось на много проще, чем я думал....пока smile.gif Вот HTML-страница
Код
<script type="text/javascript" language="JavaScript">
//Кроссбраузерная функция создания XMLHttpRequest:
function getXmlHttp()
{
var xmlhttp;
  try
{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
catch(e)
{
   try
  {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  catch (E)
  {
      xmlhttp = false;
    }
  }
  if(!xmlhttp && typeof XMLHttpRequest!='undefined')
{
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function doLoad(send_value)
{
var xmlhttp = getXmlHttp();
xmlhttp.open('POST', 'http://192.168.1.4./test.htm'+send_value, true);
xmlhttp.onreadystatechange = function()
{
   if(xmlhttp.readyState == 4)
  {
      if(xmlhttp.status == 200)
    {
        document.getElementById('recv_txt').value = xmlhttp.responseText;
      }
   }
}
  xmlhttp.send(null);
}
</script>

<form method="post" id="f" enctype="multipart/form-data" onsubmit="return false">
Send Text: <input type="text" name = "stxt" id="send_txt">
<input type="button" value="Send" id="snd" onclick="doLoad(document.getElementById('send_txt').value)">
Recv Text: <input type="text" name= "rtxt" id="recv_txt">
</form>
Я думаю, объяснений не надо. Если что то не понятно - смотрите здесь

http://javascript.itsoft.ru/ и здесь http://xmlhttprequest.ru/#use

Все, больше ниего не надо. Вот лог общения при вводе строки и нажатии на кнопку Send

Цитата
POST /test.htm1234567890 HTTP/1.1
Accept: */*
Accept-Language: ru
Referer: file://E:\TEMP\2\index.htm
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.1.4.
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.0 200 OK
Server: TinyNET 3.0 server SAM7X256-EK based system.
Connection: Close

Hello, World!


--------------------
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 9 2008, 15:04
Сообщение #58


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(prottoss @ Feb 8 2008, 16:22) *
Привет всем!

Прочитал в теме про упоминание AJAX - если кто то занимался этим, может наставит на истинный путь. Задача у меня, как говорили выше, классическая. Управление девайсом через WEB-интерфейс. AJAX привлекает:

1. Малая нагрузка на контроллер со стороны Ethernet

2. Динамическое изменение данных на странице без ее перезагрузки.

Возможно у кого нибудь есть наработки по этой библиотеке. Пробовал работать с JsHTTPRequest - эта библа построенна на основе AJAX - но она заточена под крупные сервера с поддержкой PHP.


Я пользовал AJAX для указанных задач. Из всех библиотек больше всего понравилась простотой и компактностью XHConn, представленная в http://xkr.us/code/javascript/XHConn/ Посмотрите этот сайт, там есть и пример.
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 10 2008, 08:13
Сообщение #59


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Aprox @ Feb 9 2008, 18:04) *
Я пользовал AJAX для указанных задач. Из всех библиотек больше всего понравилась простотой и компактностью XHConn, представленная в http://xkr.us/code/javascript/XHConn/ Посмотрите этот сайт, там есть и пример.

Необходимо добавить, что когда я рыскал в поисках подходящих инструментов для динамической подгрузки страниц WEB-сервера, то понял- это целый отдельный мир WEB-дизайна, в котором запросто утонуть имея другую профессию, например, электронщика- схемотехника. Можно запросто забыть, о чем собственно речь. Поэтому решил не углубляться в дебри, а ограничился минимальным- декларацией класса XHConn и работой с DOM в javasckript. Сама же страница и ее элементы рисуются традиционно, через HTML. По-моему, это самый быстрый и простой путь освоения AJAX непрофессионалу WEB-дизайна.

Если есть время на освоение нового, то советую обратить внимание на Flash -технологии создания WEB-страниц. Это достойный конкурент AJAX. И по гибкости, и по графике, и по управлению, и по динамике, и по компактности. Плюс к тому, не зависит от заморочек броузеров. В Flash уже всторены разные классы по обмену данными http-запросами. Причем, от самого простых, до сложных XML с автоматическим парсингом. Hо увлекаться схемотехнику не следует, а то можно запросто утонуть.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 10 2008, 09:21
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Aprox @ Feb 10 2008, 15:13) *
дабы не утонуть smile.gif пока решил ограничится тем, о чем говорил выше - XMLHTTPRequest - пока для меня самое то. Полан взаимодействия примерно такой:

1.Клиент формирует запрос POST/GET на скрипт-файл c параметрами. Например GET /form1.sc

2. На стороне сервера открывается соответсвующий файл и парсится.

3. При необходимости выдаются данные клиенту...

По третьему пункту есть вариант выдавать (если GET-запрос) не данные а сразу функцию JavaScript которая рассаживает данные в форме на свои места.



Что нужно на сервере:

1. Таблица описателей переменных.

2. Функции работы с этими переменными.



Элемент таблицы может выглядеть примерно так:

Код
/* MIB object class */
typedef struct __MIB_OBJ
{
   MIB_TYPE type; /* Type of object */
MIB_ACCESS access; /* Access type */

UINT16 id;/* object ID */
   CHAR   *name; /* Name - zero terminated string */
void   *value; /* Value */
UINT16   n_len; /* Name length */
UINT16   v_len; /* Value length */

} MIB_OBJ;




Идентификация переменной по ID или name. Таким образом ЮЗЕРУ необходимо знать имена переменных в девайсе и/или их идентификаторы. ЮЗЕР создает HTML-файл и скрипты для того, что бы сервер знал, как располагать в ответе переменные и стоит ли их располагать там вообще. Кроме того сервер по таблице может определять, как работать с переменными.



Когда все отработаю, естественно встанет вопрос о защите данных. Здесь возможен вариант проверки ID сессиии.... Или нет? Или еще чего? Пока не знаю


--------------------
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 22:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01526 секунд с 7
ELECTRONIX ©2004-2016