TCP Client grafisch programmiert (ANFÄNGER !!!)
-
Hallo,
ich habe Versucht einen kleinen TCP Client mit Borland C++ Builder 6 zu programmieren. Als Konsolen Programm hab ich das auch hin bekommen.
Wenn ich jetzt aber Versuch die Funktion des Socket öffnen und das öffnen der Verbindung über einen Button zu realisieren passiert NIX ... also der socket und und der connect geben keinen Fehler raus (also kein -1) aber verbunden sind die auch net :-((Hier mal der code:
//--------------------------------------------------------------------------- #include <vcl.h> #include <stdio> #include <errno.h> #include <string> #include <winsock.h> #include <io.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; char text1[1024], text2[1024]; int sock, port; struct sockaddr_in host_addr; struct hostent *hostinfo; char *host, *file; char command[1024], muell[1024]; char buf[200]; unsigned int bytes_sent, bytes_recv; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { port = StrToInt(Edit3->Text); sprintf (host, "%s",Edit2->Text); sprintf (text1,"Verbunden mit %s:%i",host ,port); sprintf (text2,"Verbindung zu %s:%i getrennt",host ,port); if ((Button2->Caption)== "VERBINDEN") { // --------------------------------- WSADATA wsaData; if (WSAStartup (MAKEWORD(1, 1), &wsaData) != 0) { Label6->Font->Color= TColor(clRed); Label6->Caption= "WSAStartup(): Kann Winsock nicht initialisieren."; exit (EXIT_FAILURE); } sock = socket (AF_INET, SOCK_STREAM, 0); if (sock == -1) { perror ("socket()"); Label6->Font->Color= TColor(clRed); Label6->Caption= "FEHLER: Konnte Socket nicht aufbauen !!!"; exit (EXIT_FAILURE); } /* Adresse des Servers festlegen */ memset( &host_addr, 0, sizeof (host_addr)); host_addr.sin_family = AF_INET; host_addr.sin_port = htons(port); host_addr.sin_addr.s_addr = inet_addr (host); /* Verbindung aufbauen */ if (connect(sock, (struct sockaddr *) &host_addr, sizeof(struct sockaddr)) == -1) { perror ("connect()"); Label6->Font->Color= TColor(clRed); Label6->Caption= "FEHLER: Konnte keine Verbindung aufbauen !!!"; exit (EXIT_FAILURE); } else { Label6->Font->Color= TColor(clGreen); Label6->Caption=text1; Button2->Caption="TRENNEN"; } // --------------------------------- } else { closesocket(sock); WSACleanup(); Label6->Font->Color= TColor(clGray); Label6->Caption=text2; Button2->Caption="VERBINDEN"; } } //---------------------------------------------------------------------------Hoffe ihr könnt mir helfen denn da ich noch totaler Anfänger bin ist das alles noch sehr undurchsichtig für mich

-
Ok
jetzt habe ich bemerkt das der C++ builder ja schon eine fertige Client Funktion drin hat ;-))) Mit der funktioniert die Sache ganz gut.