05. december 2009 - 21:48Der er
12 kommentarer og 1 løsning
C++ Winsock - Send og modtag data
Hej eksperter,
Jeg har lige brugt nogle timer på at sætte mig ind i WinSock2, og jeg har så lavet henholdsvis en ServerSocket klasse, og en ClientSocket klasse.
I mit hjemmenetværk kan jeg så komunikere via mit program og mine klasser, men mit problem er at hvis jeg gerne vil have mit program til at snakke sammen med en af mine venners computer, hvordan gør jeg så det?
Når dette problem er løst er målet så at kunne lave et chat room. Jeg har ikke brug for kode, men noget pseudo noget, altså en forklaring på hvordan man kan gøre.
Der er ikke forskel på kode som snakker med en anden computer som står 50 cm ved siden af din og så en computer som står på den anden side af jorden.
Det er stadig IP adresse og port der bruges til addressering.
Men hvis du connecter så skal du connecte til hans eksterne IP adresse (på ydersiden af hans firewall/NAT router) og han skal have lukket op for den port der bruges og han skal forwarde den port til hans PC.
Nu har jeg fundet min ip adresse, og sidder nu med en arbejds pc med en helt anden ip adresse. Men jeg må indrømme at jeg er taknemmlig for din pseudo forklaring, lige bortset fra at jeg overhoved ikke forstod den.
Som sagt er jeg lige begyndt på WinSock programmering og jeg havde ikke i min vildeste fantasi forestillet mig at det kunne/skulle være så svært at forstå, det du skrev. Så jeg bliver nok nød til at omformulere mig, jeg har vidst brug for helt præcise kode forklaringer i c++.
Det jeg siger er at det slet ikke har noget med C++ at gøre.
Hvis du har et client program og et server program som kan snakke sammen på et lokal netværk, så skal der ikke ændres noget i koden for at de kan snakke sammen over internettet. Det er kun et spørgsmål om at bruge de rigtige IP adresse, åbne op i firewalls, forwarde i NAT routere etc..
Nu har jeg en kode hvor jeg forbinder til min stationære som samtidig kører mit server program som lytter på Ip 0.0.0.0 port 666, jeg er nu på min bærbar og prøver at forbinde til 83.126.78.10 som er vores netværks adresse, som alle vores computere har. Men det jeg får af vide på min bærbar(klienten) er: Kan ikke forbinde til server 83.126.78.10 på port 666
Jeg har endda prøvet at slå firewallen helt fra på min staionære men det hjælper ikke.
Og et andet spørgsmål jeg heller ikke synes besvaret på det gode link du sendte mig, er hvordan, når man forbinder til min stationære ip adresse som jo indeholder flere computere inde under hjemmenetværket. Hvordan finder den ud af hvilken computer beskeden skal sendes til?
jo jeg kunne bare ikke differentiere mellem Lan adresser og eksterne ip adresse før du skrev det og så googlede jeg det.
Men jeg forstår stadig ikke hvorfor det ikke virker nå jeg åbner mit client program på en computer med en anden ekstern ip adresse end min staionære, åbner mit client program hvori jeg prøver at forbinde til min staionæres eksterne adresse 83.126.78.10
Som sagt har jeg midlertidigt slået firewall'en fra, men min klient siger bare at den ikke kunne forbinde: Socket error = Couldn't connect!
Det er ikke over LAN da min bærbar er en computer fra arbejdet, og har en anden ekstern IP.
Men det jeg gerne ville var at kunne lave min stationære om til en chat server, som alle (Også mine venner) kunne oprette forbindelse til via min staionæres eksterne ip adresse. Og det er så det jeg har prøvet men jeg får som sagt den der irreterende meddelelse hele tiden: Socket error = Couldn't connect!
Og med hensyn til det med LAN adresser, så kan jeg sige at det virke helt perfekt når jeg bruger computernes LAN adresser.
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.