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 initialisiertDann korregier mal Zeile 44 in deinem Programm, oder Zeig uns das komplette Programm.
-
Socket groß!!