Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

1

08.06.2007, 14:08

Frage(n) zu WinSocks und TC/IP

Hi,

kann man sendto und recvfrom auch auf TCP Sockets anwenden? oder geht das nur bei UDP-Sockets? Es kähme meinem Protokoll(auf anwendungsebene) nämlich sehr zugute, wenn man daten schon in den Socket schreiben könnte, und diese dann beim erfolgreichen verbindungsaufbau gesendet werden...


mfg,

Faule Socke

2

08.06.2007, 14:33

die Funktionen bei WinSocks mit TCP heißen send und recv und wenn du die Daten direkt senden willst wenn eine Verbindung aufgebaut wird ist das doch kein Problem!
Hier mal ein kleines Beispiel, das Programm baut eine Verbindung auf und sendet sobald es verbunden ist eine Nachricht an den Server:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <winsock2.h>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib") 


        // Konstanten für Localhost und den Port des Programms

const char[] = "127.0.0.1";
const char[] = "127.0.0.1";

const unsigned long PORT = 12345;    
const unsigned long port = 12345;


    // Funktion zum starten

int startWinsock()
{
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&wsa);
}


int main()
{
    char buffer[] ="Ich werde gesendet";

    if(startWinsock()==NULL)
    {
        std::cout<<"Erfolgreich"<<std::endl;
    }
    else
    {
        std::cout<<"FEHLER"<<std::endl;
        std::cin.sync();
        std::cin.get();
    }

    SOCKET s;
    SOCKADDR_IN addr;

    s=socket(AF_INET,SOCK_STREAM,0);

    if(s == INVALID_SOCKET)
    {
        std::cout<<"FEHLER"<<std::endl;
        std::cin.sync();
        std::cin.get();
    }
    else
        std::cout<<"ERFOLGREICH"<<std::endl;



    memset(&addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345); 
    addr.sin_addr.s_addr=inet_addr(localhost);              
    std::cout<<"Versuche zu verbinden..."<<std::endl;
    if(connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR))==SOCKET_ERROR)  // Verbindet

    {
        std::cout<<"Verbindung gescheitert"<<std::endl;             // Fehler beim senden, Programm wird beendet

        std::cin.sync();
        std::cin.get();
        return 0;
    }
    else
        std::cout<<"Verbunden!"<<std::endl;

    send(s,buffer,static_cast<int>(strlen(buffer)),0);          // und sendet direkt sobald eine Verbindung besteht


    std::cin.sync();
    std::cin.get();

    closesocket(s);     //Aufräumen

    WSACleanup();
    return 0;
}


mfg
TheProgrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

08.06.2007, 14:41

Vielen Dank erstmal, dafür dass du dir die mühe gemacht hast den quellcode zu schreiben...


ich dachte zwar es geht vllt noch anders aber das ist so auch gut.


mfg,

Faule Socke

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

4

08.06.2007, 14:47

oki nächste frage: wie kann ich alle auf dem system verfügbaren netzwerkadapter auflisten und wie kriege ich die ip-adresse des adapters raus?(Name und hersteller lönnen auch net schaden)


mfg,

Faule Socke

5

08.06.2007, 14:59

Gib mal bei google ein: "Netzwerkadapter auflisten C++"
"IP Adresse ermitteln C++"
Das dürfte schonmal helfen :roll:
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Werbeanzeige