Page 1 of 1

Citire fisier de pe un server

Posted: 09 Feb 2011, 14:30
by toderut
Cum deschid un fisier text pentru citire, fiind read-only, situat pe un server la o adresa pe care o cunosc?

Re: Citire fisier de pe un server

Posted: 09 Feb 2011, 14:38
by toderut
Sau sa citesc data (ceasul) de pe un server?

Re: Citire fisier de pe un server

Posted: 09 Feb 2011, 16:37
by cristianamarie
toderut wrote:Cum deschid un fisier text pentru citire, fiind read-only, situat pe un server la o adresa pe care o cunosc?
InternetOpenUrl si citesti cu InternetReadFile.

Re: Citire fisier de pe un server

Posted: 09 Feb 2011, 16:39
by cristianamarie
toderut wrote:Sau sa citesc data (ceasul) de pe un server?
NetRemoteTOD. E ceea ce face NET TIME \\server. Primesti un TIME_OF_DAY_INFO.

Re: Citire fisier de pe un server

Posted: 09 Feb 2011, 16:52
by toderut
A mers din prima. Mutumesc Cristi.

Re: Citire fisier de pe un server

Posted: 11 Feb 2011, 19:55
by toderut
Cu citirea orei cu ajutorul functiei NetRemoteTOD de la http://msdn.microsoft.com/en-us/library ... s.85).aspx am urmatoarea problema.
In codul de mai jos (cel de la msdn , simplificat de mine), pszServerName este initializat ca NULL si, in consecinta, citeste ora de pe calc propriu.

Code: Select all

#include <stdio.h>
#include <windows.h> 
#include <lm.h>
#pragma comment(lib, "netapi32.lib")

#ifndef UNICODE
#define UNICODE
#endif

void main()
{
   LPTIME_OF_DAY_INFO pBuf = NULL;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;/*Pointer to a constant string that specifies the DNS
   or NetBIOS name of the remote server on which the function is to execute.
   If this parameter is NULL, the local computer is used.*/ 

   nStatus = NetRemoteTOD((LPCWSTR) pszServerName,
                          (LPBYTE *)&pBuf);
   //
   // If the function succeeds, display the current date and time.
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         fprintf(stderr, "\nThe current date is: %d/%d/%d\n",
                 pBuf->tod_month, pBuf->tod_day, pBuf->tod_year);
         fprintf(stderr, "The current time is: %d:%d:%d\n",
                 pBuf->tod_hours, pBuf->tod_mins, pBuf->tod_secs);
      }
   }
   //
   // Otherwise, display a system error.
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated buffer.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);
   return;
}
Nu stiu cum sa fac sa-l initializez astfel incat sa citesc ora unui server dorit de mine. Am pus ca si comentariu ce zic ei. Poate testati voi cu un server - care vreti- si sa obtineti ora "absoluta", adica nu vreau sa depinda de ora sistemului calc pe care ruleaza aplicatia.

Re: Citire fisier de pe un server

Posted: 11 Feb 2011, 23:50
by MrSmersh
Eu cad in of topic cred ca, dar totusi ce vrei sa faci mai precis?
Teoretic de la Windows 2000 in sus toate systemele sint sincronizate folosind NIST Internet Time Service (ITS) http://www.nist.gov/pml/div688/grp40/its.cfm. Care poate fi apelat si din aplicatia ta (au cod sursa daca nu mai am cod pe undeva).
Deci teoretic calculatoarele sint sincronizate, nu intre ele ci cu o sursa externa amindoua(pina la urma echivalent), si daca totusi nu cred in serviciul din cutie pot face eu citirea de ora de la NIST.
Bine exista si posibilitatea sa vrei sa stii ora alt calculator din alte motive si revin totusi ce vrei sa faci? :biggrin:

Re: Citire fisier de pe un server

Posted: 12 Feb 2011, 11:39
by cristianamarie
Si cu numele netbios ce are? Pur si simplu pszServerName = L"\\\\servername" sau L"server.localdomain", L"server.google.com" sau cum il cheama. Cred ca merge si cu IP-uri.

Re: Citire fisier de pe un server

Posted: 12 Feb 2011, 16:36
by toderut
Cristi spune:
L"\\\\servername" sau L"server.localdomain", L"server.google.com" sau cum il cheama
.
Beleaua e ca-mi compileaza cu eroare cu L"server.google.com" ca dice:
"error C2440: 'initializing' : cannot convert from 'unsigned short [18]' to 'char *'". Iar cu
LPTSTR pszServerName="server.google.com" compileaza fara erori dar probabil ca nu-i zic bine serverul.

Totusi, problema mea era ca sa fac varianta demo a unui program cu accesarea orei de pe un server.
pana una, alta am rezolvat-o cum mi-ai zis, cu citirea unui fisier de pe un site unde mi-am pus eu ce am vrut, intr-un fisier text .(chiar gasiti aici http://www.programmershelp.co.uk/showcode.php?e=57 codul sursa. mai tr adaugat lib-ul
wininet.lib). Eu va multumesc inca o data. Chestia era cu citireaa directa a orei care ma zgandarea dupa cum am descris mai sus. :biggrin:

Re: Citire fisier de pe un server

Posted: 13 Feb 2011, 19:33
by cristianamarie
toderut wrote:Cristi spune:
L"\\\\servername" sau L"server.localdomain", L"server.google.com" sau cum il cheama
.
Beleaua e ca-mi compileaza cu eroare cu L"server.google.com" ca dice:
"error C2440: 'initializing' : cannot convert from 'unsigned short [18]' to 'char *'". Iar cu
Trebuie prototipul cu Unicode. Toate functiile NETAPI pe NT si later sint cu W, chiar daca nu arata.