Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

25.02.2008, 04:39
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
Socket под Lan
Не подскажете как грамотнее организовать передачу файла по сетке? - файл небольшой но качаеться часто - 4 раза в секунду - посоветуйте как лучше сделать - использовать Sock_stream, Sock_dgram или Sock_raw? обмен идет с приложением, которое должно работать под Nt... Буду очень благодарен за совет
|
|
|

25.02.2008, 09:59
|
|
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме: 1595333
Репутация:
291
|
|
на стороне сервера.
принимаем коннект. открываем файл. читаем из него. пишем в сокет.
на стороне клиента.
устанавливаем соединение. принимаем данные. создаем файл. пишем в него данные.
юзать нужно имхо sock_stream. хотя от того что ты конкретно юзаешь алгоритм не меняется. меняются только функции (насколько я знаю для сокет типа sock_dgram используются другие функции) . прочитай про каждый из типа сокетов и сам реши что нужно использовать.
Последний раз редактировалось zythar; 25.02.2008 в 10:02..
|
|
|

25.02.2008, 13:05
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
да функции изменяться - все это я уже разобрал. Другое дело - прога написанна -и она работает, просто нехватает канала... чуть чуть не хватает))) так вот я использовал sock_dgram... вот и подумалось мне не попробовать ли мне передавать сплошным потоком - не будет ли так меньше жрать канала? мот кто сталкивался с таким?
|
|
|

25.02.2008, 13:10
|
|
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме: 1595333
Репутация:
291
|
|
хз.. я не сталкивался.. установи опытным путем ((*
попробуй сделать обеями способами ((*
|
|
|

25.02.2008, 13:14
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
Ну видать придеться))) спасибо за совет)
|
|
|

25.02.2008, 16:17
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
использовать UDP вместо TCP можно , но не забывай что юдп не является протоколом гарантированной доставки. Пакеты могут теряться может даже измениться порядок их следования (на кривых роутерах) , поэтому то что делают ACQ и SEQ в тсп протоколе ты должен реализовать сам, либо прикручивать как это делается в p2p к каждому фрагменту заголовок говорящий в какое место файла идет данный блок.
удачи!
хотя если ты сможешь весь файл посылать одним UDP , то это будет "бескровное" решение.
Последний раз редактировалось Delimiter; 25.02.2008 в 16:59..
|
|
|

26.02.2008, 14:31
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
А что, если вместе с файлом по удп отсылать его контрольную сумму? Хоть какая-то проверка на доставленность. Клиент просто проверяет вычисленную сумму полученного файла с суммой, пришедшей по удп от сервака. Если суммы равны, то все гуд, ежели нет, то...
|
|
|

26.02.2008, 22:14
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
да достоверности там и не могет быть..... не стремись получить ее, иначе придумаешь новый ТСР.
допустим в поле данных UDP есть твой собственный мини заголовок
[N фрагмента]данные
тогда
---> передача Id блока и количество фрагментов N
<--- подтверждение получения Id
---> передача пакета
--->
.......... в этом месте источник СТРЕЛЯЕТ N фрагментов как "из пушки"
--->
---> передача пакета
---> передача индентификатора конца блока
<--- блокid(-1) если все блоки дошли либо перечисление недошедших (2,28,39)
---> подтверждение корректировки
----------------------------------------------------------------И ПОВТОРЯЕТСЯ ПРИНЯТИЕ ПАКЕТОВ!!!
в любом случае если хочешь не утратить скорости UDP своди все на "бескотрольную" передачу UDP
по поводу контрольной суммы..... если ты отсылаешь пакет(файл одним пакетом) и он доходит ТО НЕ НУЖНО ПРОВЕРЯТЬ в целостности он или нет!!!! В спецификации UDP нет понятия фрагментации которая может "резануть" пакет (это чиста фича ТСР)
Последний раз редактировалось Delimiter; 26.02.2008 в 22:25..
|
|
|

27.02.2008, 01:11
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
В общем заработало - стал передавать сплошным потоком - сэкономил 3% трафика - этого мне хватило)) спасибо за советы.
|
|
|

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