2016-09-27 9 views
2

Ich bin ziemlich neu hier und ich versuche, meine eigenen Sockets-Programm zu testen.Erstellen eines Sockets C++

Wie würde man einen Sockel erstellen? Hier ist, was ich versuche zu tun:

int main(int argc, char *argv[]) { 
    int socket_addr; 
    struct sockaddr_in server; 
    char message[100], server_message[100]; 

    // Creates the socket 
    socket_addr = socket(AF_INET, SOCK_STREAM, 0); 
    if (socket_addr == -1) { 
     cout << "Could not create the socket!"; 
    } else { 
    //... 
    } 
} 

EDIT: Diese beiden Links geholfen viel auf Sockets zu verstehen. Bitte schauen sie:

1) http://beej.us/guide/bgnet/ 
2) https://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx 
+1

die Frage etwas vage ist, versuchen hier in der Nähe suchen: http://beej.us/guide/bgnet/ – Charlie

+0

@Charlie, DANKE! : D – Johnson

+0

Was ist falsch an deinem Code? Was ist der Fehler (wenn ein Fehler aufgetreten ist)? Was hast du als Verhalten erwartet und was bekommst du? – Garf365

Antwort

0

Da Sie sagten, Sie auf Fenster sind, und ich gehe davon aus der Code, den Sie zeigte der vollständige Code ist der Grund, es funktioniert nicht, weil keine Aufruf WSAStartup ist noch gemacht worden, diese Funktion die Netzwerkbibliothek initialisiert und sollte (wie die Schaffung einer Buchse) vor jedem Netzwerkbetrieb aufgerufen werden:

//your includes here.. 

#pragma comment(lib, "ws2_32.lib") // link with the network library 

int main(int argc, char *argv[]) { 
    int socket_addr; 
    struct sockaddr_in server; 
    char message[100], server_message[100]; 

    int wsaRes = 0; 
    WSADATA wsaData = {0}; 
    wsaRes = WSAStartup(MAKEWORD(2, 2), &wsaData); 
    if(wsaRes != 0) 
    { 
     std::cerr << "WSAStartup failed!"; 
     return -1; 
    } 
    // Creates the socket 
    socket_addr = socket(AF_INET, SOCK_STREAM, 0); 
    if (socket_addr == INVALID_SOCKET) { 
     cout << "Could not create the socket!"; 
    } else { 
    //... 
    } 
}