· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› Windows sockets

Посл.отвђт Сообщенiе


Дата: Авг 2, 2003 16:48:19

1) Как используя сокеты Windows получить список компьютеров, которые находятся в сети.
2) Как зная ip компа и его название получить список выполняющихся на этом компе процессов.
3) Где взять нормальную документацию по сокетам Windows :)


Дата: Авг 2, 2003 19:16:40

edik
3) Где взять нормальную документацию по сокетам Windows :)
Этот вопрос уже неоднократно поднимался. Воспользуйтесь поиском по форуму (ключевое слово "WinSock") или идите сразу на Winsock Programmer's FAQ
1) Как используя сокеты Windows получить список компьютеров, которые находятся в сети.
Есть такая противная возможность в Windows: затопить всю сать трафиком (broadcast) для получения списка компьютеров в сети. Такое могли придумать только в MS :)


Дата: Авг 3, 2003 11:48:11

Quantum
Спасиба


Дата: Авг 11, 2003 14:15:17

Здравствуйте, edik!

1) Как используя сокеты Windows получить список компьютеров, которые находятся в сети.

Вот пример на MASM:
.486
.model flat, stdcall

option casemap:none

include windows.inc

include kernel32.inc
include mpr.inc

includelib kernel32.lib
includelib mpr.lib

.const
FindNetResource PROTO :DWORD
Print  PROTO :DWORD
PrintStr PROTO :DWORD
.data?
hConsole		dd ?

cWrite			dd ?

WSAStruct WSADATA <?>
Resource	NETRESOURCE <>

MsgBuf		db  2*1024 dup (?)

.data
Root		dd 0

ErrTitle	db 'Error!',0
lpBufferSize	dd sizeof MsgBuf
.code
start:
			invoke GetStdHandle,STD_OUTPUT_HANDLE
			mov hConsole,eax
			
			invoke FindNetResource, Root

		invoke ExitProcess,0
		
FindNetResource	proc @Root :dword
	LOCAL hEnum :DWORD,
		  dwRes	:DWORD,
		  dwCount	:DWORD,
		  dwSize	:DWORD,
		  _dw		:DWORD,
		  LocBuf[2*1024] :BYTE
		  
		invoke WNetOpenEnum,RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,@Root,addr hEnum
		.if eax !=NO_ERROR
			ret
		.endif
		
		mov dwCount,-1
		mov dwSize,sizeof LocBuf
		
		invoke WNetEnumResource,hEnum,addr dwCount,addr LocBuf,addr dwSize
		.if eax !=NO_ERROR
			ret
		.endif
		
		mov _dw,0		
		.while dwCount !=0
			mov ebx,_dw
				invoke PrintStr,LocBuf[ebx].NETRESOURCE.lpRemoteName
				invoke Print, LocBuf[ebx].NETRESOURCE.dwDisplayType
				mov eax,LocBuf[ebx].NETRESOURCE.dwUsage
				and eax, RESOURCEUSAGE_CONTAINER or RESOURCEDISPLAYTYPE_DOMAIN
				.if  eax !=0
					invoke FindNetResource,addr LocBuf[ebx]
				.endif
		add _dw,sizeof NETRESOURCE
		dec dwCount
		.endw
		

	ret

FindNetResource endp

Print	proc uses ebx String :DWORD	
	LOCAL cntWrite :DWORD
	lea esi,MsgTable
	lodsd
	.while dword ptr [esi] != 0
		.if eax == String
			invoke WriteConsole,hConsole,esi,15,addr cntWrite,0

		.endif
		add si,15
		lodsd
	.endw
	ret
MsgTable	dd RESOURCEDISPLAYTYPE_GENERIC
			db ' - Generic   ',13,10
			dd RESOURCEDISPLAYTYPE_DOMAIN
			db ' - Domain    ',13,10
			dd RESOURCEDISPLAYTYPE_SERVER
			db ' - Server    ',13,10
			dd RESOURCEDISPLAYTYPE_SHARE
			db ' - Share     ',13,10
			dd RESOURCEDISPLAYTYPE_FILE
			db ' - File      ',13,10
			dd RESOURCEDISPLAYTYPE_GROUP
			db ' - Group     ',13,10
			dd 6	;RESOURCEDISPLAYTYPE_NETWORK
			db ' - Network   ',13,10
			dd 7	;RESOURCEDISPLAYTYPE_ROOT
			db ' - Root      ',13,10
			dd 8	;RESOURCEDISPLAYTYPE_SHAREADMIN
			db ' - ShareAdmin',13,10
			dd 9	;RESOURCEDISPLAYTYPE_DIRECTORY
			db ' - Directory ',13,10
			dd 10	;RESOURCEDISPLAYTYPE_TREE
			db ' - Tree      ',13,10
			dd 11	;RESOURCEDISPLAYTYPE_NDSCONTAINER
			db ' - Container ',13,10
			dd 0
			db 0,0,0,0
;
			
Print endp

PrintStr	proc uses ebx String:DWORD
	LOCAL cntWrite :DWORD
	invoke  lstrlen,String
	mov cntWrite,eax
	invoke WriteConsole,hConsole,String,cntWrite,addr cntWrite,0

	ret

PrintStr endp
end start


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087