Zum Inhalt springen

ChrisP

Mitglieder
  • Gesamte Inhalte

    37
  • Benutzer seit

  • Letzter Besuch

Beiträge von ChrisP

  1. Stimmt, das macht natürlich Sinn!

    Client:

    /* client.cpp */
    
    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <string.h>
    
    #include <errno.h>
    
    
    /* Headerfiles für Windows */
    
    #include <winsock.h>
    
    #include <io.h>
    
    #include <iostream.h>
    
    
    #define PORT 1234
    
    #define RCVBUFSIZE 8192
    
    
    /* Funktion gibt aufgetrenene Fehler aus und
    
     * beendet die Anwendung */
    
    static void error_exit(char *errorMessage) {
    
        fprintf(stderr,"%s: %d\n", errorMessage, WSAGetLastError());
    
        exit(EXIT_FAILURE);
    
    }
    
    
    void send_recv(SOCKET socket, char* echo_string) {
    
    	int echo_len;
    
    	echo_len = strlen(echo_string);
    
    
    	/* Denn String inskl. Nullterminator an den Server senden */
    
    	if (send(socket, echo_string, echo_len, 0) != echo_len){
    
    		error_exit("send() hat eine unterschiedliche Anzahl von Bytes versendet, als erwartet.");
    
    	}
    
    
    	/*int bytesRecv = SOCKET_ERROR;
    
    	char recvbuf[32] = "";
    
    
    	while( bytesRecv == SOCKET_ERROR ) {
    
       	bytesRecv = recv( socket, recvbuf, 32, 0 );
    
       	printf("bytesRecv: %d\n",bytesRecv);
    
       	if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
    
           	printf( "Connection Closed.\n");
    
         	  break;
    
       	}
    
       	if (bytesRecv < 0)
    
       	    return;
    
        printf("Client empfängt: %s\n",recvbuf);
    
    	}
    
    	printf("ende send_recv()\n"); */
    
    }
    
    
    int main() {
    
        struct sockaddr_in server;
    
        struct hostent *host_info;
    
        unsigned long addr;
    
    
        SOCKET sock;
    
    
        char *echo_string;
    
        char *recv_string;
    
        char *target_host;
    
        char *output_string;
    
        int option;
    
        //int echo_len, recv_len;
    
    
        /* Initialisiere TCP für Windows ("winsock") */
    
        WORD wVersionRequested;
    
        WSADATA wsaData;
    
        wVersionRequested = MAKEWORD (1, 1);
    
        if (WSAStartup (wVersionRequested, &wsaData) != 0)
    
            error_exit( "Fehler beim Initialisieren von Winsock");
    
        else
    
            printf("Winsock initialisiert\n");
    
    
        /* Erzeuge das Socket */
    
        sock = socket( AF_INET, SOCK_STREAM, 0 );
    
        if (sock < 0)
    
            error_exit( "Fehler beim Anlegen eines Sockets");
    
    
    		int i;
    
    		i=0;
    
    
    		for(;
    
    		{
    
    	    cout << "Optionen: \n";
    
    	    cout << "(1) String senden\n";
    
    	    cout << "(2) Client beenden\n";
    
    	    cin >> option;
    
    
    	    switch(option){
    
    	    case 1:
    
    		    /* Erzeuge die Socketadresse des Servers
    
    		     * Sie besteht aus Typ, IP-Adresse und Portnummer */
    
    		    cout << "Geben Sie einen Zielhost ein: ";
    
    		    cin >> target_host;
    
    		    cout << "Geben Sie einen Ausgabe-String ein: ";
    
    		    cin >> echo_string;
    
    		    memset( &server, 0, sizeof (server));
    
    		    if ((addr = inet_addr(target_host)) != INADDR_NONE) {
    
    		        /* target_host ist eine numerische IP-Adresse */
    
    		        memcpy( (char *)&server.sin_addr, &addr, sizeof(addr));
    
    		    }
    
    		    else {
    
    		        /* Für den Fall der Fälle: Wandle den
    
    		         * Servernamen bspw. "localhost" in eine IP-Adresse um */
    
    		        host_info = gethostbyname(target_host);
    
    		        if (NULL == host_info)
    
    		            error_exit("Unbekannter Server");
    
    		        /* Server-IP-Adresse */
    
    		        memcpy( (char *)&server.sin_addr,
    
    		                host_info->h_addr, host_info->h_length );
    
    		    }
    
    		    /* IPv4-Verbindung */
    
    		    server.sin_family = AF_INET;
    
    		    /* Portnummer */
    
    		    server.sin_port = htons( PORT );
    
    
    				printf("vor connect()\n");	
    
    		    /* Baue die Verbindung zum Server auf */
    
    		    if(i==0){
    
    		    	if(connect(sock,(struct sockaddr*)&server,sizeof(server)) <0) {
    
    		    		  error_exit("Kann keine Verbindung zum Server herstellen");
    
    					}
    
    					i = i+1;
    
    				}
    
    				send_recv(sock,echo_string);
    
    
    		    /* Denn String inskl. Nullterminator an den Server senden
    
    		    if (send(sock, echo_string, echo_len, 0) != echo_len)
    
    		        error_exit("send() hat eine unterschiedliche Anzahl von Bytes versendet, als erwartet.");
    
    				*/
    
    
    				/*char recvbuf[32];
    
    				int bytesRecv = SOCKET_ERROR;
    
    
    				while(bytesRecv != SOCKET_ERROR)
    
    				{
    
    					if((bytesRecv = recv(sock, recvbuf, 32, 0)) < 0)
    
    						error_exit("recv() fehlgeschlagen.\n");
    
    				}
    
    				cout << "bytesRecv: " << bytesRecv;
    
    				*/
    
    
    		    break;
    
    		  case 2:
    
    		  	return(EXIT_SUCCESS);
    
    		  default:
    
    		  	cout << "Falsche Eingabe\n";
    
    		  	break;
    
    		  }
    
    	 }
    
    	 /* Schließe Verbindung und Socket */
    
       closesocket(sock);
    
    	 /* Cleanup Winsock */
    
    	 WSACleanup();
    
    
    	 return EXIT_SUCCESS;
    
    }[/code]
    
    
    
    
    Server:
    
    
    
    
    [code]/* server.cpp */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <time.h> /* Headerfiles für Windows */ #include <winsock.h> #include <io.h> #include <iostream.h> /* Portnummer */ #define PORT 1234 /* Puffer für eingehende Nachrichten */ #define RCVBUFSIZE 1024 // maximale Anzahl der Verbindungen #define MAX_LISTENER 5 // Prototypen static void echo(SOCKET); static void error_exit(char *errorMessage); void init_winsock(void); SOCKET create_socket(void); /* Funktion gibt Daten vom Client auf dem stdout aus, * welche dieser mit der Kommandozeile übergibt */ static void echo(SOCKET client_socket) { char echo_buffer[RCVBUFSIZE]; int recv_size; time_t zeit; //int bytesSent; //char sendbuf[32] = "Server sendet"; if((recv_size = recv(client_socket, echo_buffer, RCVBUFSIZE,0)) < 0) error_exit("Fehler bei recv()"); echo_buffer[recv_size] = '\0'; time(&zeit); printf("Server empfängt: %s \t%s",echo_buffer, ctime(&zeit)); /*printf("vor send()\n"); bytesSent = send( client_socket, sendbuf, strlen(sendbuf), 0 ); //printf("Ende echo()\n"); */ } /* Funktion gibt aufgetrenene Fehler aus und * beendet die Anwendung */ static void error_exit(char *error_message) { fprintf(stderr,"%s: %d\n", error_message, WSAGetLastError()); exit(EXIT_FAILURE); } void init_winsock() { /* Initialisiere TCP für Windows ("winsock") */ WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD (1, 1); if (WSAStartup (wVersionRequested, &wsaData) != 0) error_exit( "Fehler beim Initialisieren von Winsock"); else printf("Winsock initialisiert\n"); } SOCKET create_socket() { SOCKET sock; /* Erzeuge das Socket */ sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) error_exit("Fehler beim Anlegen eines Socket"); return sock; } int main() { struct sockaddr_in server; //client SOCKET OrigSocket, AcceptSocket; int len, echo_len; char *echo_string; init_winsock(); OrigSocket = create_socket(); /* Erzeuge die Socketadresse des Servers */ memset( &server, 0, sizeof (server)); /* IPv4-Verbindung */ server.sin_family = AF_INET; /* INADDR_ANY Jede IP-Adresse annehmen */ server.sin_addr.s_addr = htonl(INADDR_ANY); /* Portnummer */ server.sin_port = htons(PORT); /* Erzeuge die Bindung an die Serveradresse * (genauer an einen bestimmten Port) */ if(bind(OrigSocket,(struct sockaddr*)&server, sizeof( server)) < 0) error_exit("Kann das Socket nicht \"binden\""); // wieder einfügen /* Bearbeite die Verbindungswünsche von Clients * in einer Endlosschleife * Der Aufruf von accept() blockiert solange, * bis ein Client Verbindung aufnimmt */ int acc = 0; for (;;) { /* Teile dem Socket mit, dass Verbindungswünsche * von Clients entgegengenommen werden */ if(listen(OrigSocket, MAX_LISTENER) == -1 ) error_exit("Fehler bei listen"); //len = sizeof(server); //client printf( "Waiting for a client to connect...\n" ); AcceptSocket = SOCKET_ERROR; while ( AcceptSocket == SOCKET_ERROR ) { AcceptSocket = accept(OrigSocket,NULL,NULL); acc++; } printf( "Client Connected: accept: %d.\n",acc); echo(AcceptSocket); } /* Schließe die Verbindung */ closesocket(OrigSocket); closesocket(AcceptSocket); WSACleanup(); return EXIT_SUCCESS; }

  2. Hallo,

    ich habe einen Server und einen Client in C geschrieben. Der Client kann sich auch zum Server connecten und der Server gibt auch beim ersten Senden das Gesendete aus. Wenn der Client danach wieder Daten sendet, kommt am Server nichts mehr an. Die Funktion accept() scheint keine Verbindung mehr zu akzeptieren. Hat jemand eine Idee?

    Gruß

    Chr

  3. Hallo zusammen,

    ich habe ein Formular mit drei Select-Boxen. Jetzt habe ich folgendes Problem. Ich möchte die zweite und die dritte select-box ausblenden oder so haben, dass man nichts mehr ändern kann, solange die erste Select-box einen bestimmten Default-Wert hat. Wenn man dann die erste select-box anklickt, sollen auch die anderen beiden select-boxen zur Verfügung stehen. Wie mache ich das mit JavaScript, oder geht das überhaupt?

    Danke schonmal

    ChrisP

  4. Hi zusammen,

    ich möchte in eine Oracle-DB den folgenden Track-Title einfügen: 'After you've gone'

    Mein Insert-Statement sieht folgendermassen aus:

    insert into blabla (track_name) values ('After you''ve gone');

    Allerdings haut er mir hier eine seltsame Fehlermeldung raus:

    ORA-01401: inserted value too large for column

    Aber der Wert ist nicht zu groß, denn als Datentyp für dieses Feld hab ich VARCHAR2 mit der Länge 255.

    Kann mir jemand helfen?

    Gruß

    ChrisP

  5. Ich habe gute Erfahrungen damit gemacht, wenn man einfach einen Texteditor nimmt, der Syntaxhighlighting hat. Der Vorteil gegenüber einer Entwicklungsumgebung ist der, dass Du das, was Du schreibst, auch wirklich verstanden haben musst und Dir nicht alles nur von der Entwicklungsumgebung "vorgekaut" wird.

    Ein solcher Texteditor wäre z.B. UltraEdit. Da kannst Du Dir für fast jede Programmiersprache die Syntax runterladen, auch für JSP.

    Gruß

    ChrisP

  6. Hallo zusammen,

    ich beschäftige mich zur Zeit mit einer Oracle-DB, die ich überarbeiten muss. Ich hab mal von einem Tool gehört, dass die Tabellen und die Beziehungen untereinander graphisch darstellt. (So ähnlich wie in Access) Leider hab ich bei Google und in den vorherigen Threads nichts gefunden.

    Hat jemand vielleicht ein solches Tool?

    Danke und Gruß

    ChrisP

  7. Hi zusammen,

    ich möchte vom Input Stream eine Zahl einlesen. Dazu möchte ich die Methode readFloat() benutzen. Ich habe java.io.* importiert. Allerdings wird bei mir trotzdem der Fehler "Methode nicht gefunden" ausgeworfen. Kann mir jemand helfen?

    Danke und Gruß

    ChrisP

  8. Der NoClassDefFoundError ist behoben. Jetzt allerdings nen neuer Fehler:

    Beim compilieren des .jar-Archivs werden mehrere Files erzeugt, u. a. auch das File "NameBeanHomeImpl.java". In diesem File steht anstelle des Interface-Namen immer Package.Interface, und das findet er nicht. Weiss jemand vielleicht eine Lösung.

    PS: Das Package hab ich schon geändert. Gibt es bestimmte Konventionen, aus welchem Verzeichnis man das .jar-Archiv kompilieren muss oder ähnliches?

    Danke und Gruß

    ChrisP

  9. Danke erstmal, aber hier noch ne andere Frage dazu:

    Ich hab jetzt das Remote-Interface, das Home-Interface, die Bean selber, die ejb-jar.xml und die weblogic-ejb-jar.xml in ein .jar-Archiv zusammengefasst. Das klappt noch. Als nächsten Schritt will ich mit weblogic.ejbc dieses Archiv kompilieren. Aber ich bekomme eine Fehlermeldung NoClassDefFoundError. Woran kann das liegen? Ich habe ein sehr ähnliches Beispiel, bei dem es aber klappt. Irgendwelche Ideen?

    Gruß

    ChrisP

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...