Ubuntu: Sockets



  • Hallo,

    #include <iostream>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <netdb.h> // gethostbyname(), hostent
    #include <errno.h> // errno 
    #include <stdio.h>
    
    using namespace std;
    
    int main (int argc, char *argv[])
    {
    	string ip = argv[1];
    	const string tx = "HEAD / HTML/1.1";
    	char buffer[256];
    	int n;
    
    	using namespace std;
    
    	cout<<"Welcome to Logfilesaver Ethernet by DarthRevan"<<endl<<endl;
    
        	int Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        	if(Socket == -1)
        	{
        		cout << "Error: Creating socket" << endl;
        	    	return 1;
        	}
    
        	sockaddr_in service;
        	service.sin_addr.s_addr = inet_addr(ip.c_str());
        	service.sin_family = AF_INET;
        	service.sin_port = htons(80); 
    
        	int result; 
    
        	result = connect(Socket, reinterpret_cast<sockaddr*>(&service), sizeof(service));
    
    	if (result >= 0)
    	{
    		//Okay nun können wir die Sendefunktion machen
    
        		if (result < 0) 
             	{
    			cout<<"Error: Could not send data"<<endl;
    		}
        		bzero(buffer,256);
    	}
    	else
    	{
    		cout << "Error: Could not establish a connection"<<endl;
    		return -1;
    	}
    
    }
    

    Der Code funktioniert einwandfrei, jedoch will ich nun eine Sendefunktion einbauen. Alle meine Versuche sind bis gescheitert:

    [/code]
    send (socket, tx.c_str(), strlen(tx.c_str()));

    
    

    write (socket, buffer, strlen(buffer));
    [code]

    Hoffe jemand kann mir helfen, danke



  • Ich finde jetzt auf Anhieb keinen fehler, mir ist aber aufgefallen, dass du die send-Funktion mit falschen Parametern aufrufst.

    ssize_t send(int s, const void *buf, size_t len, int flags);
    

    Also müsstest du

    send (Socket, tx.c_str(), tx.size(), 0 );
    

    machen.

    Ansonsten berichte mal von Fehlermeldungen oder was genau nicht funktioniert.



  • socks.cpp: In function »int main(int, char**)«:
    socks.cpp:44: Fehler: ungültige Umwandlung von »int ()(int, int, int)throw ()« in »int«
    socks.cpp:44: Fehler: Argument 1 von »ssize_t send(int, const void
    , size_t, int)« wird initialisiert



  • socket => Socket



  • -........ schrieb:

    socket => Socket

    🙄 stimmt



  • Mal ne Frage abseits, ist write() nicht eigentlich angenehmer als send()? (Also wenn die Flags eh 0 sind.)



  • Mr. N schrieb:

    Mal ne Frage abseits, ist write() nicht eigentlich angenehmer als send()? (Also wenn die Flags eh 0 sind.)

    Klappt aber z.B. nicht auf Windows (ist jetzt auch die einzige Ausnahme, die mir einfällt).



  • ProgChild schrieb:

    Mr. N schrieb:

    Mal ne Frage abseits, ist write() nicht eigentlich angenehmer als send()? (Also wenn die Flags eh 0 sind.)

    Klappt aber z.B. nicht auf Windows (ist jetzt auch die einzige Ausnahme, die mir einfällt).

    Wir sind im Linux/Unix-Forum und der Thread enthält "Ubuntu" im Titel. 🙂



  • client.cpp: In function »int main(int, char**)«:
    client.cpp:44: Fehler: ungültige Umwandlung von »int ()(int, int, int)throw ()« in »int«
    client.cpp:44: Fehler: Argument 1 von »ssize_t send(int, const void
    , size_t, int)« wird initialisiert



  • leidernein schrieb:

    client.cpp: In function »int main(int, char**)«:
    client.cpp:44: Fehler: ungültige Umwandlung von »int ()(int, int, int)throw ()« in »int«
    client.cpp:44: Fehler: Argument 1 von »ssize_t send(int, const void
    , size_t, int)« wird initialisiert

    Dann korregier mal Zeile 44 in deinem Programm, oder Zeig uns das komplette Programm.



  • Socket groß!!


Anmelden zum Antworten