@CSharpChatЭта группа больше не существует

Страница 966 из 1888
Anatoly
08.05.2017
18:00:20
То есть на стороне клиента определяется длина, отсылается серверу, а затем уже отсылается сам сериализованный объект сообщения, так?
https://blog.stephencleary.com/2009/04/tcpip-net-sockets-faq.html Вот тут все про всег грабли рассказано. Про длинну сообщения перед ним, вот пример: https://blog.stephencleary.com/2009/04/sample-code-length-prefix-message.html Т.е. ты посылаешь сначала int(4 байта) с количеством байт в сообщении. А потом само сообщение. Принимающая сторона читает 4 байта, выясняет сколько байт в сообщении. И считывает его.

Летучая
08.05.2017
18:02:34
только всё под капотом

тоже так принимаю, полёт нормальный

Google
Unknown
08.05.2017
18:04:46
Ну это вот примерно и есть вариант с передачей длины в начале.
Так здесь же не передаётся длина, здесь мы просто читаем до конца, пока есть что читать, насколько я понимаю.

Anatoly
08.05.2017
18:04:48
Ну по хорошему надо не просто int в поток выплёвывать, а через NetworkToHostOrder. И также считывать.

Igor
08.05.2017
18:05:46
Как програмно (WPF) посмотреть занят ли файл другим процессом?

Unknown
08.05.2017
18:09:25
Ну, это однопоточный пример. Есть же и RecieveAsync. Но вообще такая концепция с циклом и чтением пока не 0 нормальная?

Anatoly
08.05.2017
18:10:52
ну если ты собираешся только текст передавать и сразу его выводить, имеет право на жизнь. Для чего-то более серьёзного - не катит.

Unknown
08.05.2017
18:10:55
Точнее там такое условие: while (s.Available > 0);

А почему?

Anatoly
08.05.2017
18:13:47
Ну допустим у тебя будет два типо сообщений от клиента серверу. один - сообщение пользователя другой - какая-то служебная информация, которую не надо показывать пользователю. Тебе нужно будет что-то вроде протокола сообщений. А как ты их потом бить собираешься? также считывать, переводить в текст, а потом искать по тексту где сообщения заканчиваются? Код быстро в какашку превратится

Unknown
08.05.2017
18:18:12
Я собирался передавать сериализованные в байты объекты сообщений. А потом их десериализовывать обратно в объекты на принимающей стороне...

Михаил
08.05.2017
18:20:08
дело в том, что у тебяв программе может быть не один тип ссобщений, а несколько. И чтобы понимать, куда именно надо направить пакет от клиента, надо передавать какую-то дополнительную информацию



Google
Михаил
08.05.2017
18:20:56
я использую примерно такую схему для каждого пакета

Unknown
08.05.2017
18:22:19
Да пожалуйста - в объекте Message можно сделать поле message_type, в котором указывать тип сообщения, а принимающая сторона после получения объекта поймет, что делать. Разве плохо?

Anatoly
08.05.2017
18:22:52
Ну допустим длина одного сообщения 100 байт. Второго получилась 150 байт.

Считал ты 250 байт

как делить будешь

Михаил
08.05.2017
18:23:13
не плохо и не хорошо, это твоя реализация, продумай что ты хочешь полностью)

Unknown
08.05.2017
18:23:40
Михаил
08.05.2017
18:25:07
а ещё можешь подумать, как будешь отличать пакет-ответ с сервера, и пакет-ивент =)

Unknown
08.05.2017
18:47:29
Да отличать то ладно, я вот над разделением думаю...

Михаил
08.05.2017
18:47:51
чего именно?

Unknown
08.05.2017
18:48:23
Михаил
08.05.2017
18:49:54
(4 байта на длину сообщения)(2 байта на тип сообщения)(данные)

Летучая
08.05.2017
18:51:41
сериализовать в жсон и гнать пачки

и читать до конца

Михаил
08.05.2017
18:52:38
жосн не оптимально ддля тсп =) уж лучше протобаф

Летучая
08.05.2017
18:52:55
+

но для учебного проекта пойдет

Unknown
08.05.2017
18:53:27
Ну смотрите, сериализовал я объект в байты, отправил их серверу, он считал их до конца, какие тут проблемы с разделением?

Михаил
08.05.2017
18:54:05
данне склеиваются в тсп и слипаются как им угодно

Google
Михаил
08.05.2017
18:54:12
гарантируется только доставка и порядок

Selvetarm
08.05.2017
18:55:36
в юнити надо выбрать
Колясочник.. мельчает линуксоид

Unknown
08.05.2017
18:56:04
Ну, поток байт, который я отправил не изменится же. Десериализую в объект и всё... Какие проблемы?

Selvetarm
08.05.2017
18:56:49
А можно где-нибудь почитать про делегаты и лямбды языком для дебилов?

Типа на примере паровозиков или чего-то такого

Unknown
08.05.2017
18:57:55
Я просто тестил обмен текстом, у меня получение было при помощи цикла, который я выше приводил, всё приходило, я декодировал текст и готово. Почему я не могу вместо декодирования текста поставить десериализацию и получить свой объект?

Михаил
08.05.2017
19:11:24
да ладно

а если я пошлю объект в 2 гига ?

как ты его за одно чтение считаешь?

Like
08.05.2017
19:13:17
Объект в 2 гига

Михаил
08.05.2017
19:13:29
пример

Like
08.05.2017
19:13:29
Это даже не god object

Роман
08.05.2017
19:13:42
Я просто тестил обмен текстом, у меня получение было при помощи цикла, который я выше приводил, всё приходило, я декодировал текст и готово. Почему я не могу вместо декодирования текста поставить десериализацию и получить свой объект?
если ты просто читаешь и выводишь текст, то тебе в самом деле всё равно, это как одно большое сообщение. А вот для того чтобы текст передавать на десериализацию в жсон конвертер тебе нужно как-то понять где начало и конец текста. в конечном итоге ты можешь скинуть сюда ссылку на репу со своей реализацией

а если я пошлю объект в 2 гига ?
очень просто: я закрываю соединение, если сообщение не укладывается в пакет :) на моих текущих сценариях проканывает (у меня веб сокеты в онлайн игре)

Михаил
08.05.2017
19:15:10
ты не понял примера?

я про то, что байты идут потоком и этот поток надо как-то делить

задержки в сети бывают самые разные, а это значит моя ситиуация, что я описал выше волне возможна

Google
Михаил
08.05.2017
19:17:09
а специафикация тсп не гарантирует, где и как эти пакеты будут доставлены, это может быть как 100 байт за чтение, так и 8 кб

и сколько твоих пакетов ты считаешь за одинраз - не известно

Anatoly
08.05.2017
19:17:29
Да нах два гига. MTU в районе 1500 байт у ethernet. А в зависимости от соединения и того меньше. Несколько килобайт и всё. сообщение уже приходит несколькими tcp пакетами. А с учётом задержек могу прийти два, отправленных в разное время.

Прикол с: буду слать и читать работает только на localhost

Михаил
08.05.2017
19:18:02
да боже... я примёл пример с 2мя гигамси

Anatoly
08.05.2017
19:18:22
я понимаю что утрировано :)

Михаил
08.05.2017
19:18:44
ну а тогда в чём вопрос то? =)

в том что сообщнения надо делить)

и выше я предлагал пример, какой хеадер пакета-команды использую я

Daniel
08.05.2017
19:21:41
Помогите с оффтоп-вопросом, либо подскажите чат, где мне могут помочь. Есть программа Charles, которая ловит HTTP пакеты и позволяет заменять данные ответа сервера, но всё это делается вручную: 1. Поставил брейпоинт. 2. Дождался запроса. 3. Дождался ответа. 4. Изменит ответ. Вопрос вот в чём: как проводить все ти действия автоматически в Charles и, если никак, то какая программа сможет мне предложить такую функцию? P.S. Самому лень писать приложение прост :с

Unknown
08.05.2017
19:21:41
Ну смотрите, вот мой кусок кода, в котором я получаю текст: Socket ns = s.Accept(); byte[] buffer = new byte[1024]; int l; do { l = ns.Receive(buffer); Console.WriteLine(System.Text.Encoding.Unicode.GetString(buffer, 0, l)); } while (ns.Available > 0);Socket ns = s.Accept();

Ой, сейчас отформатирую.

Михаил
08.05.2017
19:23:53
попробуй пошли двумя командами: 1 команда (буква А) вторая команда (буква Б)

есть вероятность, больша, что ты считаешь АБ

Unknown
08.05.2017
19:25:44
Да я пробовал отправлять самые разные по длине сообщения, все приходили нормально...

Летучая
08.05.2017
19:26:05
А в чем вопрос-то тогда

Михаил
08.05.2017
19:26:16
на локал хосте?

Летучая
08.05.2017
19:26:17
)))

Unknown
08.05.2017
19:26:47
на локал хосте?
Нет, между компами в одной сети.

Михаил
08.05.2017
19:26:57
на самом деле, тебе советтуют как правильно) а ты делай как хзнаешь)

Google
Unknown
08.05.2017
19:29:52
Да нет, я хочу сделать как правильно, конечно же. Просто хочу понять, что неправильного в моём коде. Вот отправлю я "А", сервер получит это, цикл отработает и завершится, а когда придет "Б" - это уже будет другой цикл же, как оно может смешаться...

Михаил
08.05.2017
19:30:15
оно может смешаться

это решаешь не ты =)

Unknown
08.05.2017
19:30:59
оно может смешаться
Если отправить сообщения в один момент?

Летучая
08.05.2017
19:31:14
Кто-нибудь пробовал райдер в связке с UWP/WPF? Как там с дебагом и скоростью? Шустрее VS?

Михаил
08.05.2017
19:31:25
один момент понятие растяжимое

сегоня есть задержки, завтра из нет

Igor
08.05.2017
19:32:57
Кто-нибудь пробовал райдер в связке с UWP/WPF? Как там с дебагом и скоростью? Шустрее VS?
Что то мне подсказывает что там и поддержки их нет (он же крослпатформенный).

Unknown
08.05.2017
19:33:54
Ладно, буду читать еще... Всем спасибо за помощь!

Михаил
08.05.2017
19:34:29
Ладно, буду читать еще... Всем спасибо за помощь!
ты если хочешь, обращайся в личку, я уже достаточно давно работаю с сетью)

Unknown
08.05.2017
19:36:14
О, спасибо. Только сначала почитаю еще информацию по теме, а то туплю что-то).

Владимир
08.05.2017
19:42:14
сук

Sergey
08.05.2017
19:42:32
Еба

Вытираю это

Белова спам гроб-гроб кладбище #бан

Страница 966 из 1888

Эта группа больше не существует Эта группа больше не существует