06. maj 2006 - 14:17Der er
20 kommentarer og 1 løsning
Problem med gethostbyaddr
Davs alle sammen:
Jeg har et problem med gethostbyaddr funktionen. Koden herunder virker perfekt, den looper ind til den finder en DNS for at oversætte. Problemet ligger i, hvorfor skal den oversætte den ipaddresse jeg giver den, for at connect vil gennemfører?
Hvis jeg kun skriver dette for at connecte til en anden pc på LAN
virker det ikke, kun hvis jeg smider den ip ind i koden herunder, som så oversætter med gethostbyaddr. Dog virker det hvis jeg connecter til mig selv..
Det vil altså sige, at jeg ikke kan bruge det her på et nætværk uden DNS eller adgang til internettet, hvorfor?
char* IPAddress = "10.13.11.10";
addr=inet_addr(IPAddress);
while (true) { hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET); if (hp == NULL) { cout << "Get host failed..."<<endl; Sleep(100); } else break; }
//Connect to server sockaddr_in clientService; clientService.sin_family = AF_INET;//Internet adresse familie clientService.sin_addr.s_addr = inet_addr( "127..0.0.1" );//Ip socket bliver bundet til clientService.sin_port = htons( 9000 );// Port nummer
If no error occurs, gethostbyaddr returns a pointer to the hostent structure. ------------------------------------------------------------------------------- hostent: Members
h_name: Official name of the host (PC). If using the DNS or similar resolution system, it is the Fully Qualified Domain Name (FQDN) that caused the server to return a reply. If using a local hosts file, it is the first entry after the IP address.
h_aliases: Null-terminated array of alternate names.
h_addrtype: Type of address being returned.
h_length: Length of each address, in bytes.
h_addr_list: Null-terminated list of addresses for the host. Addresses are returned in network byte order. The macro h_addr is defined to be h_addr_list[0] for compatibility with older software.
Synes godt om
Slettet bruger
07. maj 2006 - 13:27#6
dvs den oversætter ip addressen til et hostnavn, hvorfor når den skal connecte (ud i byen)?
Altså jeg har lært C++ gennem mit studie og der bruger vi Microsoft Visual Studio 2005. Det er et udviklingsværktøj jeg er utrolig glad for at arbejde med!
Synes godt om
Slettet bruger
07. maj 2006 - 13:45#13
jep dte bruger jeg netop også, men jeg vil forsøge at få mit program til at virke på en PC UDEN dotnet, det er jo netop hvad c++ burde kunne right?.. men compiler i VS2005, og der siger den "forkert programkonfiguration" når jeg kører det på en ren xp installation med sp2?
det er fordi at Microsoft i 2005 udgaven har lavet noget rod med nogle DLL filer der er 2 løsninger: 1: Ved mig er stien: C:\Programmer\Microsoft Visual Studio 8\VC\redist! Den burde være nogenlunde det samme for dig (på den com. hvor VS 2005 er installeret) Derinde er der dll-filer som kan få det til at virke!
2: Den nemmere metode er at ændre nogle projekt properties! I vs for projektet: project->properties(ALT+F7) configuration properties -> C/C++-> C/C++ -> Code generation. I vinduet til højre ændre du "Runtime library" fra "Multi-threaded Debug DLL (/MDd)" til "Multi-threaded Debug (/MTd)"
Det er pga at der er knyttet nogle dll filer til projektet ved løsning 2 bliver de inkluderet i exe filen så den vil ved løsning 2 også blive større(min. 600 KB mener jeg)
Synes godt om
Slettet bruger
07. maj 2006 - 14:49#15
gjorde som du sagde i 2: den giver mig denne fejl:
Error 1 fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds C:\Programmer\Microsoft Visual Studio 8\VC\atlmfc\include\afxver_.h 77
Det tror jeg ikke men aner det faktisk ikke for at være ærlig
Synes godt om
Slettet bruger
07. maj 2006 - 16:06#21
nå okay, jeg må forsøge mig lidt.. tak
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.