powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не отдает ответTcpClient
17 сообщений из 42, страница 2 из 2
Не отдает ответTcpClient
    #39641310
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не спец по Java, возможно здесь у вас блокирующее чтение: socketChannel.read(h);
Кроме того, bb.flip - не меняется ли здесь порядок следования байт?
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641321
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, я в java вообще не шарю( Спасибо за подсказку, поищу сейчас по справкам, может быть в этом и дело
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641323
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложите еще, что там конкретно вы отправляете на сервер. Что за последовательность байт
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641324
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не OPC случаем? тогда гуглите про протокол своего устройства
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641527
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,
Это из java-примера запись в логе (первая строка текст запроса, вторая строка заголовок+закодированный текст запроса).
{"password":"BXiUVPLN"}
d5-80-d4-b4-d5-84-00-05-01-00-00-18-4b-24-29-15-9c-ef-1f-3a-b0-b6-f8-3a-d0-2d-24-60-81-28-51-33-2d-00-41-d3

После bb.flip() последовательность байтов не меняется, остается такая же, как выше (нумерация байтов слева-направо). Прикладываю так же скриншот байтового массива, который отправляется из моей программы.
Для кодирования запросов используется стандартный алгоритм 3DES: ECB режим и PKCS padding
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641632
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnyaS{"password":"BXiUVPLN"}
Девушка, к вам в компании так лояльно относятся, что вы спокойно пароли публикуете?
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641633
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnyaS{"password":"BXiUVPLN"}
Девушка, к вам в компании так лояльно относятся, что вы спокойно пароли публикуете?
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641644
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда :) я не так давно случайно забыл включить авторизацию на своем проекси севрере :) через 5 дней обнаружил, что им уже пол интернета пользуется :D , при том, что не где не публиковал адрес сервера.
(точнее я авторизацию настроил, а ограничения не включил)
а тут совсем палево :) осталось только узнать, от чего пароль
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641651
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, это пароль тестового устройства, который был на этом устройстве установлен в момент посылки команды. Пароль меняется нажатием одной кнопки) Более того, это периферийное устройство
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641652
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, и да, пароль этот действует только для одной команды, для остальных запросов генерируется сессионный пароль.
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641666
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnyaS,

Если у вас сервер имеет выход в и-нет, можете дать ip, попробую проверить
Только убедитесь, что он тестовый ))))
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641675
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, попробуйте, конечно) А по теме обсуждения нет идей?
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641699
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnyaSArm79, попробуйте, конечно) А по теме обсуждения нет идей?
Как нет. Есть.
Выложите байтовый массив запроса как приложение в виде файла, дайте IP, я проверю и дам код.

По моему, ответ не менялся все это время - 21376831
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39641846
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, тогда устройство надо настраивать на работу с Вашим ПК, т.к. оно может принимать запросы только с одного ip-адреса, и если я правильно понимаю, то они должны находиться в одной локальной сети.
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39642057
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnyaS
Код: vbnet
1.
ns.Write(bb, 0, bb.Length - 1)


Возможно, дело в этой строке )))

Из bb.Length не нужно вычитать 1 ни при записи, ни при чтении. 3 параметр - это КОЛИЧЕСТВО байт для отправки, а количество не zero-based

В Java-коде тоже кстати без -1.
...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39642058
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имитация сервера
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        static void Main(string[] args)
        {
            var server = new TcpListener(Dns.Resolve("localhost").AddressList[1], 9998);
            server.Start();

            Console.WriteLine("Started");

            while (true)
            {
                using (var stream = server.AcceptTcpClient().GetStream())
                {

                    var read = stream.ReadByte();

                    // 11 символов возвращаем
                    var send = Encoding.ASCII.GetBytes($"Received -{read}");

                    stream.Write(send, 0, send.Length);
                    stream.Close();

                    Console.WriteLine($"Отправили: {Encoding.ASCII.GetString(send)}");
                }
            }
        }
    }



Типа ваш клиент
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
        static void Main(string[] args)
        {
            Thread.Sleep(1000);

            do {
                using (TcpClient client = new TcpClient())
                {
                    client.Connect(Dns.Resolve("localhost").AddressList[1], 9998);
                    try
                    {
                        using (var stream = client.GetStream())
                        {
                            stream.WriteByte((byte)new Random().Next(10));

                            using (MemoryStream ms = new MemoryStream())
                            {
                                while (true)
                                {
                                    // выход из цикла
                                    if (ms.Length == 11)
                                        break;

                                    // ждем появления данных
                                    if (false == stream.DataAvailable)
                                    {
                                        Thread.Sleep(10);
                                        continue;
                                    }

                                    // читаем все что есть
                                    var buffer = new byte[11];
                                    var readCount = stream.Read(buffer, 0, buffer.Length);

                                    // записываем, сколько считали (может быть меньше 11)
                                    ms.Write(buffer, 0, readCount);
                                }

                                Console.WriteLine(Encoding.ASCII.GetString(ms.ToArray()));
                            }
                        }

                    }
                    finally
                    {
                        client.Close();
                    }
                } 

            } while (Console.ReadKey().Key == ConsoleKey.Enter);

        }

...
Рейтинг: 0 / 0
Не отдает ответTcpClient
    #39643375
EnyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, спасибо Вам огромное, золотой человек! Все это время я искала ошибку не там. Правильно было отправлять запрос так
Код: plaintext
1.
ns.Write(bb, 0, bb.Length)
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не отдает ответTcpClient
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]