![]() |
|
Модераторы: Akina |
![]()
|
|
| DenageS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Здравствуйте.
Прошу подсказать мне как сделать 2 программы: одна принимает текст, другая передает. Т.е. на одном компе нажал отправить, на другом в программе появляется этот текст. |
|||
|
||||
| Dexx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 13.6.2005 Репутация: 5 Всего: 7 |
-------------------- |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: 3 Всего: 4 |
Изучай.
Добавлено @ 20:48 ЗЫ: тут 2 в одном и клиент и сервер по желанию. Присоединённый файл ( Кол-во скачиваний: 49 )
nettest.rar 6,89 Kb |
|||
|
||||
| DenageS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Спасибо Вам большое!!!
|
|||
|
||||
| DenageS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Появилась проблема.
У меня числа должны отправляться каждые 10 миллисекунд, однако 1. они не успевают обрабатываться даже при 100мб/с =( 2. Цифры залазиют одни в другие. Т.е. должно придти сначала 1, потом 2, 3 и тд. А они приходят 12, 34, 56 Как можно от этого избавиться? Это сообщение отредактировал(а) DenageS - 7.3.2007, 16:47 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Проблема в том, что TCP/IP не предоставляет достаточно постоянной скорости доставки пакетов. Особенно это проблемно в нагруженной сети или при проходе пакетов через маршрутизатор. Можно посоветовать использовать COM-порт - тут гарантия лучше. Но как я понимаю сие невозможно. Добавить к просто числам еще и ID который постепенно увеличивается. И тогда будет понятно, что раньше, а что позже. |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: 3 Всего: 4 |
Это очень странно... Можно перед посылкой пропинговать сеть несколько раз (чем больше, тем точнее будет) и посмотреть среднее время отклика между пакетами, потом задать это значение на скорость пересылки. Только незабуть поставить размер пакетов равный размеру памяти твоей переменной. И поменяй с Integer на Byte, мне кажется это повлияет. Или тебе нужно фиксированное значение на скорость? И, кстати, если ты эти числа сгруппируешь в одну переменную, скажем в string, то они точно нормально дойдут. Это сообщение отредактировал(а) Kirill89 - 7.3.2007, 20:33 |
|||
|
||||
| DenageS |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Еще раз спасибо.
Мне кажется более простой и рациональный способ:
Хотя опять же кто гарантирует, что эта переменная не влезет в предыдущую. Поэтому придется делть еще
Все идет через свич. |
||||||
|
|||||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: 3 Всего: 4 |
||||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Вообще - если числа приходят в разнобой у меня ощущение, что для каждой передачи делается отдельный коннект - так это ?
Потому как если использовать один коннект по TCP - не должны они налезать друг на друга - по протоколу сие невозможно. Хотелось бы узнать реализацию подробнее. |
|||
|
||||
| DenageS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Да так, однако должна быть задержка между коннектом и отправкой сообщения, иначе ошибка.
Появился еще вопросик. Если ко мне требуется подключить неизвестное количество клиентов, то как поступать? |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: 3 Всего: 4 |
Так по определению ip/tcp протокол не поддерживает постоянного приема/передачи данных (постоянного подключения). Этот протокол принимает/отправляет пакеты а в ответ на них приходят биты паритета в значении true/false. Каждая посылка - одно соединение, и если отправить длинную посылку, то пока показатели тактового генератора и бита паритета не будут true, посылка пакета будет повторяться. Или я ошибаюсь? |
|||
|
||||
| manson |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 21.5.2007 Репутация: нет Всего: нет |
У меня возникло несколько вопросов; возможно, они покажутся глупыми, так как я новичок в программировании. Прошу отвечать подробнее. Заранее спасибо!
1. Я уже понял, как передавать и получать данные типа «String». А можно ли отсылать массивы, изображения и звук? Если можно то, каким образом? 2. Допустим, на стороне сервера создано несколько переменных, а клиент поэтапно пересылает числовые и строковые данные. Как сделать так, чтобы сервер присваивал очередное значение соответствующей переменной? 3. Как обеспечить работу сервера с несколькими клиентами? *если я разместил свои вопросы не в той теме, то приношу свои извенения! |
|||
|
||||
| DenageS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 29.9.2006 Репутация: нет Всего: нет |
Я тоже новичек.
Но есть несколько предположений: 1. Наверное надо передавать побайтово.. 2. Например нам надо засунуть какую-то инфу в переменную strA. Клиент отпраляет пакет с первым символом например "a", а после этого символа собственно данные. Сервер анализирует первый символ пришедшей информации, если он оказывается равен значению "a", то засовываем его в переменную strA. И т.д. 3. Я просто нужное количество конторолов winsock. |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: 3 Всего: 4 |
1) помести содержимое файла в переменную типа string и передай её. Массивы проще всего писать в srting с разделением a(0)=123 a(1)=456 a(2)=789 str=#123#456#789# а потом клиентом всё это резать на куски (так я обычно делаю, возможно есть более удобные варианты) 3) Создать несколько WinSock. Или постоянно переподключаться. Это сообщение отредактировал(а) Kirill89 - 21.5.2007, 21:04 |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |