Создание сетевого протокола
Модераторы: Naeel Maqsudov, C_O_D_E
Каждый клиент использует одно соединение, а сервак столько, сколько у него клиентов, но все они в массиве через один компонент. Поясни термен "диалог" и объясни, что с этими диалогами делать в моём случае.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ок. В одном соединении шлется файл. Т.е. программа читает файл, бьет его на куски и пихает в буфер для передачи. Тут пользователь отправил параллельно сообщение. Оно ушло в тот же буфер для передачи. Как на том конце разберутся что к кчему относится.
Сообщения должны содержать идентификатор, который позвояет отличить один контекст от другого. Это и есть номер диалога (это еще в некоторых телефонных протоколах называют виртуальным соединением). Т.о. как бы параллельно можно организовать передачу разнородной информации.
Сообщения должны содержать идентификатор, который позвояет отличить один контекст от другого. Это и есть номер диалога (это еще в некоторых телефонных протоколах называют виртуальным соединением). Т.о. как бы параллельно можно организовать передачу разнородной информации.
Нет. Connect делается один раз при загрузке проги. А файлов можно качать много. + тектовые сообщения. + управляющие пакеты с сервака. Как всё это раздлить? Или я не понял, что такое соединение? Каждый пакет имеет код типа, по которому различаются тектсовые сообщения, служебные пакеты, управляющие и куски файлов. А два файла как не смешать? И два текстовых сообщения? Разнородная инфа разделена сразу, а что делать с однотипной, но различной?" писал(а):Ок. В одном соединении шлется файл. Т.е. программа читает файл, бьет его на куски и пихает в буфер для передачи. Тут пользователь отправил параллельно сообщение. Оно ушло в тот же буфер для передачи. Как на том конце разберутся что к кчему относится.
Сообщения должны содержать идентификатор, который позвояет отличить один контекст от другого. Это и есть номер диалога (это еще в некоторых телефонных протоколах называют виртуальным соединением). Т.о. как бы параллельно можно организовать передачу разнородной информации
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
atavin-ta писал(а):Предложите идею сетевого протокола прикладного уровня, поддерживающего чат сообщения, передачу файлов и управление самой приладой.
Что-то ты какой-то многостаночник - не может солдат в день два мешка брюквы съесть...
Не может два съесть, но может двести увидеть и по мешкам сосчитать. И кто про день говорит?" писал(а):Что-то ты какой-то многостаночник - не может солдат в день два мешка брюквы съесть...
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Разработка протокола - это сложная задача. Поэтому надо почитать сначала про OSI. Русских даже переводов и различных сочинений на тему этой спецификации в инете полно. По каким словам ее искать я уже написал.
Зачем это нужно: чтобы разбить задачу на подзадачи. Определяем, что физический уровень - это TCP-IP. Далее строим сетевой уровень, т.е. определяем, как приложения адресуют друг друга, как они хендшейкаются, что они делают при разрыве связи. Одно ли физическое соединение они держат, или создают несколько виртуальных соединений. (пакеты относящиеся к одному соединению помечены одним числом, а к другому - другим)
Следующий уровень - транзакций. Диалоги нужны за тем, чтобы определять успешно завершилась вся транзакция или нет. (пакет относящийся к определенному диалогу также передается с собственым ID) Например, файл полностью дошел или нет.
Только потом идет уровень представлений, где уже будет определенным числом обозначаться тип пакета, и показывать, что это: кусочек файла, или кусочек сообщения.
И т.д. по спецификации. Нет времени всю ее здесь пересказывать.
Также полезно изучить какую-нибудь готовую спецификацию протокола, родственного по назначению. Например SMPP.
Одновременно надо думать, как каждый уровень в протоколе (протокол в стеке протоколов) будет программно реализовываться.
Зачем это нужно: чтобы разбить задачу на подзадачи. Определяем, что физический уровень - это TCP-IP. Далее строим сетевой уровень, т.е. определяем, как приложения адресуют друг друга, как они хендшейкаются, что они делают при разрыве связи. Одно ли физическое соединение они держат, или создают несколько виртуальных соединений. (пакеты относящиеся к одному соединению помечены одним числом, а к другому - другим)
Следующий уровень - транзакций. Диалоги нужны за тем, чтобы определять успешно завершилась вся транзакция или нет. (пакет относящийся к определенному диалогу также передается с собственым ID) Например, файл полностью дошел или нет.
Только потом идет уровень представлений, где уже будет определенным числом обозначаться тип пакета, и показывать, что это: кусочек файла, или кусочек сообщения.
И т.д. по спецификации. Нет времени всю ее здесь пересказывать.
Также полезно изучить какую-нибудь готовую спецификацию протокола, родственного по назначению. Например SMPP.
Одновременно надо думать, как каждый уровень в протоколе (протокол в стеке протоколов) будет программно реализовываться.
Здесь пересказывать и не нужно. Скажи, где взять спецификации для примера и спецификации нижних уровней?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
в начале дал ссылку http://en.wikipedia.org/wiki/OSI_model, там превосходное описание OSI, да еще ссылки на десятки примеров протоколов, реализующих каждый уровень OSI
А на русском нельзя?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".