Программирование >>  Автоматически обновляемые приложения 

1 ... 144 145 146 [ 147 ] 148 149 150 ... 170


Пистйнг 16.19. Проверка подключения локальной системы к сети

[Dlllmport( sensapi.dll )]

private extern static bool IsNetworkAlive(ref int flags);

private static int NETWORK ALIVE LAN = 0x00000001; private static int NETWORK ALIVE WAN = 0x00000002;

public static bool IsLanAlive() {

return IsNetworkAlive(ref NETWORK ALIVE LAN);

public static bool IsWanAliveO {

return IsNetworkAlive(ref NETWORK ALIVE WAN);

private void buttonl Click(object sender, EventArgs e) {

this.Text = IsLanAlive0 .ToString0;

private void button2 Click(object sender, EventArgs e) {

this.Text = IsWanAliveO .ToStringO ;

Примечание

Пример проверки связи находится в папке NetworkDemo на прилагаемом диске.

Как выяснить,

подключена ли локальная система к сети, и узнать используемый тип соединения?

Сетевая функция Windows API isNetworkAlive определяет, подключена ли локальная система к сети, а также возвращает информацию о типе соединения (LAN, WAN). Пример ее использования показан в листинге 16.19.



Листинг 16.20. Получение списка всех компьютеров локальной сети

using System.Runtime.InteropServices; using System.Collections;

[Dlllmport( netapi32.dll , EntryPoint = NetServerEnum )] public static extern NERR NetServerEnum (

[MarshalAs(UnmanagedType.LPWStr)]string ServerName,

int Level, out IntPtr BufPtr,

int PrefMaxLen, ref int EntriesRead,

ref int TotalEntries, SV 101 TYPES ServerType,

[MarshalAs(UnmanagedType.LPWStr)] string Domain,

int ResumeHandle);

[Dlllmport( netapi32.dll , EntryPoint = NetApiBufferFree )] public static extern NERR NetApiBufferFree(IntPtr Buffer);

[StructLayout(LayoutKind.Sequential)] public struct SERVER INFO 101 {

[MarshalAs(UnmanagedType.U4)] public uint svl01 platform id; [MarshalAs(UnmanagedType.LPWStr)] public string svl01 name; [MarshalAs(UnmanagedType.U4)] public uint svl01 version major; [MarshalAs(UnmanagedType.U4)] public uint svl01 version minor; [MarshalAs(UnmanagedType.U4)] public uint svl01 type;

Получение списка всех компьютеров локальной сети

Если вы работаете в локальной сети, то, несомненно, для вас интересен вопрос, как получить список всех работающих компьютеров в локальной сети или, например, список серверов SQL. Таюке хочется знать, как получить имя домена, контроллера домена и другую информацию. Встроенными средствами .NET Framework реализовать эту задачу пока не удастся. В листинге 16.20 показано, как достичь результата, воспользовавшись функциями Windows API.



/ <summary>

/ Список ошибок, возвращаемых NetServerEnum / </summary> public enum NERR {

NERR Success =0, успех ERROR ACCESS DENIED = 5, ERROR NOT ENOUGH MEMORY = 8, ERROR BAD NETPATH = 53, ERROR NETWORK BUSY =54, ERROR INVALID PARAMETER =87, ERROR INVALID LEVEL =124, ERROR MORE DATA =234, ERROR EXTENDED ERROR = 1208, ERROR NO NETWORK = 1222, ERROR INVALID HANDLE STATE = 1609, ERROR NO BROWSER SERVERS FOUND = 6118,

/ <suramary> / Типы серверов / </summary> [Flags]

public enum SV 101 TYPES : uint {

SV TYPE WORKSTATION = 0x00000001, SV TYPE SERVER = 0x00000002, SV TYPE SQLSERVER = 0x00000004, SV TYPE DOMAIN CTRL = 0x00000008, SV TYPE DOMAIN BAKCTRL = 0x00000010, SV TYPE TIME SOURCE = 0x00000020, SV TYPE AFP = 0x00000040, SV TYPE NOVELL = 0x00000080, SV TYPE DOMAIN MEMBER = 0x00000100, SV TYPE PRINTQ SERVER = 0x00000200, SV TYPE DIALIN SERVER = 0x00000400, SV TYPE XENIX SERVER = 0x00000800, SV TYPE SERVER UNIX = SV TYPE XENIX SERVER,

[MarshalAs(UnmanagedType.LPWStг)] public string svl01 corament;



1 ... 144 145 146 [ 147 ] 148 149 150 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика