
Anatoly
08.05.2017
18:00:20

Летучая
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) посмотреть занят ли файл другим процессом?

Владимир
08.05.2017
18:06:13

Anatoly
08.05.2017
18:07:55

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
18:58:27

Роман
08.05.2017
19:11:18

Михаил
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

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

Михаил
08.05.2017
19:34:29

Летучая
08.05.2017
19:35:52

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

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

Sergey
08.05.2017
19:42:32
Еба
Вытираю это
Белова спам гроб-гроб кладбище #бан
Эта группа больше не существует