Bmax application connecten auf C-server

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Ticha

Betreff: Bmax application connecten auf C-server

BeitragSo, Sep 16, 2007 3:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute

ich habe mir mal wieder meine nettes Buch "C von A bis Z" angeschaut und wieder den netten Multiserevr gefunden. Da hab ich mir gedahct, cool. verscuh ich einen BMAX client zu schreiben und auf den sevrr zuzugreifen. hmmm... mit einem normalen C programm funktioniert das, aber mit einem BlitzMax programm nicht. Obwohl ich auch über die Sockets drauf zugreife...

ich lasse dne server laufen. Dieser läuft ohne probleme... sobald der client auch nur den server berührt gibt der server mir als ausgabe:
Code: [AUSKLAPPEN]

neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
neue Eingabe eingeganeg:
...
...
usw


und hört damit nicht mehr auf.

ich poste mal den C code:

Code: [AUSKLAPPEN]

/* multi_server.c */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "socketprx.h"
#define BUF 1024   
 
int main (void) {
  socket_t sock1, sock2, sock3;
  int i, ready, sock_max, max=-1;
  int client_sock[FD_SETSIZE];
  fd_set gesamt_sock, lese_sock;
  char *buffer = (char*) malloc (BUF);

  sock_max = sock1 = create_socket(AF_INET, SOCK_STREAM, 0);
  atexit(cleanup);
  bind_socket( &sock1, INADDR_ANY, 2222 );
  listen_socket (&sock1);
 
  for( i=0; i<FD_SETSIZE; i++)
     client_sock[i] = -1;
  FD_ZERO(&gesamt_sock);
  FD_SET(sock1, &gesamt_sock);

  for (;;) {
    /* Immer Aktualisieren */
    lese_sock = gesamt_sock;
    /* Hier wird auf die Ankunft von Daten oder
     * neuer Verbindungen von Clients gewartet */
    ready = select( sock_max+1, &lese_sock, NULL, NULL, NULL );
    /* Eine neue Client-Verbindung ... ? */
    if( FD_ISSET(sock1, &lese_sock)) {
       accept_socket( &sock1, &sock2 );
       /* Freien Platz f�r (Socket)Deskriptor
        * in client_sock suchen und vergeben */
       for( i=0; i< FD_SETSIZE; i++)
          if(client_sock[i] < 0) {
             client_sock[i] = sock2;
             break;
          }
       /* Mehr als FD_SETSIZE Clients sind nicht m�glich */   
       if( i == FD_SETSIZE )
          error_exit("Server �berlastet - zuviele Clients");
       /* Den neuen (Socket)Deskriptor zur
        * (Gesamt)Menge hinzuf�gen */   
       FD_SET(sock2, &gesamt_sock);
       /* select() ben�tigt die h�chste
        * (Socket)Deskriptor-Nummer */
       if( sock2 > sock_max )
          sock_max = sock2;
       /* h�chster Index f�r client_sock
        * f�r die anschlie�ende Schleife ben�tigt */
       if( i > max )
          max = i;
       /* ... weitere (Lese)Deskriptoren bereit ? */   
       if( --ready <= 0 )
          continue; //Nein ...
    } //if(FD_ISSET ...
   
    /* Ab hier werden alle Verbindungen von Clients auf
     * die Ankunft von neuen Daten �berpr�ft */
    for(i=0; i<=max; i++) {
       if((sock3 = client_sock[i]) < 0)
          continue;
       /* (Socket)Deskriptor gesetzt ... */   
       if(FD_ISSET(sock3, &lese_sock)){
          /* ... dann die Daten lesen */
          TCP_recv (&sock3, buffer, BUF-1);
          printf ("Nachricht empfangen: %s\n", buffer);
          /* Wenn quit erhalten wurde ... */
          if (strcmp (buffer, "quit\n") == 0) {
             /* ... hat sich der Client beendet */
             close_socket (&sock3);        //Socket schlie�en
             FD_CLR(sock3, &gesamt_sock);  //aus Menge l�schen
             client_sock[i] = -1;          //auf -1 setzen
             printf("Ein Client hat sich beendet\n");
          }
          /* Noch lesbare Deskriptoren vorhanden ... ? */
          if( --ready <= 0 )
             break; //Nein ...
       }
    }
  } // for(;;)
  return EXIT_SUCCESS;
}



und hier der Code von dem BMax Client

Code: [AUSKLAPPEN]

Global socket:TSocket = CreateTCPSocket()
Global stream:TSocketStream = CreateSocketStream(socket)

If Not socket.Connect(HostIp("localhost"),2222) Print "not connected"

Print "verbunden"
stream.writeline("/0")
   stream.close()
    socket.close()
'socket.Connect(HostIp("localhost"),2222)

'stream.writeline("test")



weiss jemand von euch woran das liegen könnte, dass dieser keine richtie connection mit dem aufbaut...

gurss ticha[/code]

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group