Hallo , habe ein Programm in C geschrieben,
/* client.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <errno.h>
#include <winsock.h>
#include <windows.h>
#include <sys\stat.h>
#include <io.h>
#define RCVBUFSIZE 8192
#define ZEILENLAENGE 80
#define MAXPUF 80
int main (int argc, char **argv ) {
int ClientSocket;
int result;
char puffer [MAXPUF]= "Hallo test";
struct sockaddr_in AddrServerSock;
char ip_adress [] = "127.0.0.1";
int server_port = strtol(argv[2], NULL, 10);
printf(argv[1]);
printf(argv[2]);
// Ausgabe
ClientSocket= socket(AF_INET, SOCK_STREAM, 0); // Socket-Struktur
anlegen
AddrServerSock.sin_family = AF_INET; // Domain
AddrServerSock.sin_addr.s_addr = inet_addr("127.0.0.1");
//AddrServerSock.sin_addr.s_addr = inet_addr(ip_adress);
AddrServerSock.sin_port = htons(1234);
result = connect(ClientSocket, (struct
sockaddr*)&AddrServerSock, sizeof(AddrServerSock));
// Warten bis Aufruf vom Server (durch accept-Funktion) zurürt
if (result == -1)
{
printf("Verbindung nicht moeglich!\n");
exit(-1);
}
else
printf("Port (Server): %i\n", AddrServerSock.sin_port);
// Ausgabe des Serverports
//fgets(puffer, MAXPUF, stdin); // Zeichenkette einlesen
result = write(ClientSocket, puffer, MAXPUF, 0); // und
verschicken
if (result == -1)
printf("Fehler beim Senden!\n");
else
printf("Daten erfolgreich verschickt!\n");
result = read(ClientSocket, puffer, MAXPUF, 0); // warten auf
Antwort vom Server
if (result == -1)
printf("Keine Daten empfangen !\n");
else
printf("Daten vom Server: %s\n", puffer);
close(ClientSocket);
return 0;
}
möchte damit Daten per TCP übermitteln,
bekomme jedoch immer folgende Fehlermeldung beim Linken
Erzeugen von client2.obj.
C:\Users\mwolff\Documents\Pelles C Projects\client\client2.c(49):
warning #2027: Missing prototype for 'write'.
C:\Users\mwolff\Documents\Pelles C Projects\client\client2.c(54):
warning #2027: Missing prototype for 'read'.
C:\Users\mwolff\Documents\Pelles C Projects\client\client2.c(60):
warning #2027: Missing prototype for 'close'
benutze PellesC als Compiler
kennt das jemand ?? Bin etwas ratlos
Da wirst Du wohl vergessen haben, die Headerdatei einzubinden, in der
die Prototypen von write, read und close enthalten sind.
Welche das ist, kannst Du mit find oder findstr in einem
Kommandozeilenfenster ("Eingabeaufforderung") selbst herausfinden.
Geh in das include-Verzeichnis des Compilers und gib folgendes ein:
find close *.h
oder
findstr /c:"close" *.h
... und read() kann theoretisch auch 0 liefern, dann ist der Inhalt des Puffers nicht verändert. Diesen Fall solltest du auch abfangen (nicht nur -1) und dann nicht den Puffer ausgeben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.