HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Socket под Lan
  #1  
Старый 25.02.2008, 04:39
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
С нами: 10321822

Репутация: 57
По умолчанию Socket под Lan

Не подскажете как грамотнее организовать передачу файла по сетке? - файл небольшой но качаеться часто - 4 раза в секунду - посоветуйте как лучше сделать - использовать Sock_stream, Sock_dgram или Sock_raw? обмен идет с приложением, которое должно работать под Nt... Буду очень благодарен за совет
 
Ответить с цитированием

  #2  
Старый 25.02.2008, 09:59
zythar
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
С нами: 9596486

Репутация: 291


По умолчанию

на стороне сервера.
принимаем коннект. открываем файл. читаем из него. пишем в сокет.

на стороне клиента.
устанавливаем соединение. принимаем данные. создаем файл. пишем в него данные.

юзать нужно имхо sock_stream. хотя от того что ты конкретно юзаешь алгоритм не меняется. меняются только функции (насколько я знаю для сокет типа sock_dgram используются другие функции) . прочитай про каждый из типа сокетов и сам реши что нужно использовать.

Последний раз редактировалось zythar; 25.02.2008 в 10:02..
 
Ответить с цитированием

  #3  
Старый 25.02.2008, 13:05
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
С нами: 10321822

Репутация: 57
По умолчанию

да функции изменяться - все это я уже разобрал. Другое дело - прога написанна -и она работает, просто нехватает канала... чуть чуть не хватает))) так вот я использовал sock_dgram... вот и подумалось мне не попробовать ли мне передавать сплошным потоком - не будет ли так меньше жрать канала? мот кто сталкивался с таким?
 
Ответить с цитированием

  #4  
Старый 25.02.2008, 13:10
zythar
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
С нами: 9596486

Репутация: 291


По умолчанию

хз.. я не сталкивался.. установи опытным путем ((*
попробуй сделать обеями способами ((*
 
Ответить с цитированием

  #5  
Старый 25.02.2008, 13:14
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
С нами: 10321822

Репутация: 57
По умолчанию

Ну видать придеться))) спасибо за совет)
 
Ответить с цитированием

  #6  
Старый 25.02.2008, 16:17
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

Репутация: 518
По умолчанию

использовать UDP вместо TCP можно , но не забывай что юдп не является протоколом гарантированной доставки. Пакеты могут теряться может даже измениться порядок их следования (на кривых роутерах) , поэтому то что делают ACQ и SEQ в тсп протоколе ты должен реализовать сам, либо прикручивать как это делается в p2p к каждому фрагменту заголовок говорящий в какое место файла идет данный блок.

удачи!
хотя если ты сможешь весь файл посылать одним UDP , то это будет "бескровное" решение.

Последний раз редактировалось Delimiter; 25.02.2008 в 16:59..
 
Ответить с цитированием

  #7  
Старый 26.02.2008, 14:31
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

А что, если вместе с файлом по удп отсылать его контрольную сумму? Хоть какая-то проверка на доставленность. Клиент просто проверяет вычисленную сумму полученного файла с суммой, пришедшей по удп от сервака. Если суммы равны, то все гуд, ежели нет, то...
 
Ответить с цитированием

  #8  
Старый 26.02.2008, 22:14
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

Репутация: 518
По умолчанию

да достоверности там и не могет быть..... не стремись получить ее, иначе придумаешь новый ТСР.
допустим в поле данных UDP есть твой собственный мини заголовок

[N фрагмента]данные

тогда

---> передача Id блока и количество фрагментов N
<--- подтверждение получения Id
---> передача пакета
--->
.......... в этом месте источник СТРЕЛЯЕТ N фрагментов как "из пушки"
--->
---> передача пакета
---> передача индентификатора конца блока
<--- блокid(-1) если все блоки дошли либо перечисление недошедших (2,28,39)
---> подтверждение корректировки
----------------------------------------------------------------И ПОВТОРЯЕТСЯ ПРИНЯТИЕ ПАКЕТОВ!!!
в любом случае если хочешь не утратить скорости UDP своди все на "бескотрольную" передачу UDP



по поводу контрольной суммы..... если ты отсылаешь пакет(файл одним пакетом) и он доходит ТО НЕ НУЖНО ПРОВЕРЯТЬ в целостности он или нет!!!! В спецификации UDP нет понятия фрагментации которая может "резануть" пакет (это чиста фича ТСР)

Последний раз редактировалось Delimiter; 26.02.2008 в 22:25..
 
Ответить с цитированием

  #9  
Старый 27.02.2008, 01:50
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
С нами: 10321822

Репутация: 57
По умолчанию

Цитата:
Сообщение от Delimiter  
по поводу контрольной суммы..... если ты отсылаешь пакет(файл одним пакетом) и он доходит ТО НЕ НУЖНО ПРОВЕРЯТЬ в целостности он или нет!!!! В спецификации UDP нет понятия фрагментации которая может "резануть" пакет (это чиста фича ТСР)
Прости что ты имешь в виду? Насколько я знаю udp дейтаграмма содержит в своем заголовке чексумму.
 
Ответить с цитированием

  #10  
Старый 27.02.2008, 01:11
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
С нами: 10321822

Репутация: 57
По умолчанию

В общем заработало - стал передавать сплошным потоком - сэкономил 3% трафика - этого мне хватило)) спасибо за советы.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows 2008 procedure Windows 3 05.02.2008 09:49
Двойной вход под оним Uinом SilverStar Skype, IRC, ICQ, Jabber и другие IM 6 10.10.2005 02:53



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...