powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Статус tcp соединения с MOXA
7 сообщений из 7, страница 1 из 1
Статус tcp соединения с MOXA
    #38614248
LZTMEvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Есть оборудование, которое подключается к приложению через устройство (MOXA 311).
В приложении создается TcpClient и далее идет попытка подключения к MOXe (она в сети).
Все бы ничего но, Connect Проходит даже если MOXA выключена.
Подскажите пожалуйста, каким образом мне отследить потерю связи с устройством?
я пытался делать ping. Но приложение работает под WINCE и из своей программы сделать ping у меня не получилось.
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614273
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LZTMEvg,
... да, по-моему с TcpClient-ом можно только пытаться писать в буфер и читать ответ, соответственно проверяя его CanRead и Connected после этого, чтобы определить, соединен он, или нет ... Ваша МОХА отвечает как-то стандартно на первый запрос? ..
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614301
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOXA 311 - обычный конвертер ethetnet-rs232/422/485

проверять нужно не связь с конвертером, а связь с устройством - посылать команды устройству и проверять ответы
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614303
LZTMEvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
Я решил идти в сторону Ping.
На просторах интернета нашел вот такой пример:
Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Net;
using System.ComponentModel;

namespace MMPing
{
    public static class myPing
    {
        #region ICMP helper stuff
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        private struct ICMP_OPTIONS
        {
            public Byte Ttl;
            public Byte Tos;
            public Byte Flags;
            public Byte OptionsSize;
            public IntPtr OptionsData;
        };

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        private struct ICMP_ECHO_REPLY
        {
            public int Address;
            public int Status;
            public int RoundTripTime;
            public Int16 DataSize;
            public Int16 Reserved;
            public IntPtr DataPtr;
            public ICMP_OPTIONS Options;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 250)]
            public String Data;
        }

        [DllImport("iphlpapi.dll", SetLastError = true)]
        private static extern IntPtr IcmpCreateFile();
        [DllImport("iphlpapi.dll", SetLastError = true)]
        private static extern bool IcmpCloseHandle(IntPtr handle);
        [DllImport("iphlpapi.dll", SetLastError = true)]
        private static extern Int32 IcmpSendEcho(IntPtr icmpHandle, Int32 destinationAddress, String requestData, Int32 requestSize, ref ICMP_OPTIONS requestOptions, ref ICMP_ECHO_REPLY replyBuffer, Int32 replySize, Int32 timeout);
        #endregion

        public static int Ping(IPAddress IP)
        {
            IntPtr ICMPHandle;
            Int32 iIP;
            String sData;
            ICMP_OPTIONS oICMPOptions = new ICMP_OPTIONS();
            ICMP_ECHO_REPLY ICMPReply = new ICMP_ECHO_REPLY();
            Int32 iReplies;

            ICMPHandle = IcmpCreateFile();
            iIP = BitConverter.ToInt32(IP.GetAddressBytes(), 0);
            sData = "x";
            oICMPOptions.Ttl = 255;

            iReplies = IcmpSendEcho(ICMPHandle, iIP,
                sData, sData.Length, ref oICMPOptions, ref ICMPReply,
                Marshal.SizeOf(ICMPReply), 30);

            IcmpCloseHandle(ICMPHandle);
            return iReplies;
        }
    }
}



код ошибок не выдает, но не работает ))) всегда возвращает 0.
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614365
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LZTMEvg, см 15879700
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614437
LZTMEvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping работает. Общаться с самим устройством не могу. Железяка просто принимает команды и все, без отправки признака их получения.
...
Рейтинг: 0 / 0
Статус tcp соединения с MOXA
    #38614519
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LZTMEvg,

... так если на пинг она не отвечает (что вполне логично, если ICMP протокол у нее выключен, ибонефик), она же должна как-то стандартно отвечать на стандартные запросы? .. типа 250 ОК, как почтовик, например ...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Статус tcp соединения с MOXA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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