Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Server gesucht
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
 
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.05.2012, 15:28    Titel: Antworten mit Zitat

micha hat Folgendes geschrieben:
Für Doppelkopf Netzwerk reicht jede kostenlose Homepage mit PHP und einer Datenbank z.B. http://www.funpic.de/ alles free PHP MySQL FTP 5GB ...

Startet ein Doppelkopf Server dann trägt er sich mit einem simplen HTTP ASCI string in der Datenbank ein.


Naja, er hat doch ausdrücklich geschrieben, dass der bereits fertig entwickelte (!) "Gameserver" ein GFABasic-Programm mit grafischer Oberfläche (Steuerkonsole) ist.
Das heißt, es ist eher ein permanenter Dienst und kein zustandsloses Skript (welches bei jeder Anfrage neu interpretiert würde).
Wahrscheinlich ist außerdem ein eigenes Protokoll implementiert, über das die Clients mit dem Server kommunizieren.

Eine HTTP-REST-Schnittstelle zu verwenden - etwa auf Basis von php-Skripten - wäre doch ein vollkommen anderer Design-Ansatz und würde einen totalen Rewrite der Anwendung erfordern - zumal er dann keinerlei grafische Oberfläche für die Steuerungsfunktionalität hätte, die ihm aber zentral wichtig ist!
Das würde bedeuten, dass zusätzlich ein Webinterface entwickelt und abgesichert werden müsste. Selbst wenn man Frameworks wie jQuery UI für die Darstellung verwendet, ist das immer noch jede Menge Arbeit und würde bedeuten, dass er php etc. lernen müsste.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 24.05.2012, 11:38    Titel: Antworten mit Zitat

Leider weiss ich nicht, wie ich in GFA Basic ein Programm ohne Fenster schreiben soll.
In Freebasic weiss ich das zwar auch nicht, aber dort scheint es ja möglich zu sein.
Also könnte ich ja zumindest den Doko-Server in Freebasic umschreiben.

Da die Doko-Clients Windows sind, könnte ich dennoch den Freebasic-Doko-Server mit TSNE PLay programmieren?
Die Client empfangen und senden so:
Empfangen:
bytes = recv(read_sock, V:Read_Buffer, 4096, 0)
If bytes > 0 Then
StringFromServer = Left$(Read_Buffer, bytes)
Endif

Senden:
bytes = send(read_sock, send_Bytes, Len(send_Bytes), 0)

Bekommt man das irgendwie TSNE kompatibel?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.05.2012, 11:57    Titel: Antworten mit Zitat

Hallo!

Zitat:
In Freebasic weiss ich das zwar auch nicht, aber dort scheint es ja möglich zu sein.

Ja, mit FreeBASIC kann man fensterlose (Konsolen-)programme - auch für die Hintergrundverarbeitung (--> Serverdienst) - erstellen. Ein solcher FreeBASIC-basierter "DoKo-Server" könnte natürlich auch auf einem Linux-(v)Server laufen und würde keine Windows-Umgebung erfordern.

Zitat:
Also könnte ich ja zumindest den Doko-Server in Freebasic umschreiben.

Da die Doko-Clients Windows sind, könnte ich dennoch den Freebasic-Doko-Server mit TSNE PLay programmieren?

Die TCP-Socketkommunikation ist sprach-unabhängig, d. h. Client und Server können problemlos in unterschiedlichen Programmiersprachen geschrieben sein und dennoch miteinander kommunizieren, solange sie ein gemeinsames Protokoll verwenden.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.05.2012, 14:19    Titel: Antworten mit Zitat

Wenn du schon eine Server Variante geschrieben hast, würde ich dir nicht TSNEPlay empfehlen sondern TSNE selbst. TSNEPlay ist bereits ein komplexes Konzept um Spiele Kommunikation zu realisieren. Das würde bedeuten, das du beide Anwendungen (Server und Client) abändern müsstest. Und das vermutlich nicht gerade in geringem ausmaß.

TSNE jedoch ist eine art "Rohform" der Socket-Abstraktion.
Dies ist leichter zu integrieren, vorallem da du warscheinlich schon alle nötigen Protokolle zur Kommunikation für dein Server/Client System integriert hast, und eigetnlich auch alles funktioniert. TSNEPLay besitzt ein eigenes Protokoll, weshalb der umbau vermutlich sehr viel schwieriger wäre.

Wenn du den Netzwerkteil deines Server zeigen würdest, könne man dir sicher bei der Integration von TSNE helfen.


das Send würde z.B. so aussehen:
Code:
bytes = send(read_sock, send_Bytes, Len(send_Bytes), 0)

Dies würde durch ...
Code:

'TSNEID muss die Nummer sein, an welchen Client gesendet werden soll (Ne art Socketnummer)
Dim RV as Integer = TSNE_Data_Send(TSNEID, send_Bytes, Bytes)
If RV <> TSNE_Const_NoError Then
    Print "Fehler beim senden! Es wurden nur " & Str(Bytes) & " erfolgreich übertragen. Der Fehler lautet: " & TSNE_GetGURUCode(RV)
End If

... ersetzt werden.

Der Empfang würde sich etwas ändern, da TSNE Asynchron arebitet und Callbacks nutzt. Hierfür muss eien Sub eingerichtet werden, welche automatisch den Empfang der Daten signalisiert.

Anstat ständig zu "poolen" (ständig die recv funktion aufrufen um zu sehen ob was da ist) ruft TSNE selbstständig beim empfang neuer daten eien Sub-Routine auf, welche du definiert hast. Ich nenne Sie immer "TSNE_NewData" der übersicht halber. Aber du kannst auch andere Namen nutzen.
Code:

Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'V_TSNEID enthält die "Socket-nummer" des clienten, welcher diese Daten zu uns geschickt hat.
'V_Data enthält die Daten
StringFromServer = V_Data
End Sub


Ein Tutorial (falls du dich da selbst reinarbeiten möchtest) gibts hier: http://www.freebasic-portal.de/tutorials/netzwerkprogrammierung-tsne-v3-60.html


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 24.05.2012, 16:20    Titel: Antworten mit Zitat

Danke für eute Hilfe.

die Sub TSNE_NewData ist ja schon in TSNE enthalten.
Wie kriere ich jetzt den Server und wo muss jetzt eine do-loop Schleife setzen?
Meine Clients connecten anscheinend, mehr allerdings nicht. Übermittelte Strings werden nirgends angezeigt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.05.2012, 16:21    Titel: Antworten mit Zitat

Ohne quellcode können wir dir hier nicht wirklich helfen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 24.05.2012, 18:08    Titel: Antworten mit Zitat

den Code der Clients habe ich doch schon geschrieben:

bytes = send(read_sock, send_Bytes, Len(send_Bytes), 0)
send_Bytest ist ein String
read_sock ist eine socketNr

Ich übergebe einen Inhalt an den String send_Bytes und sende ihn dann an den Doko-Server.

Das Problem ist, dass ich jetzt nicht weiss, wo ich welche Schleife in TSNE einbauen muss, damit TSNE diesen String empfangen kann.

Der Client scheint ja zu connecten,allerdings wird der String in keiner einzigen Sub aus TSNE angezeigt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.05.2012, 18:12    Titel: Antworten mit Zitat

wie gesagt ... ohne quellcode, können wir dir nicht helfen.

bezüglich schleife. das braucht tsne nicht. die arbeitet ohne schleife mit sogenannten callbacks. wenn daten eingehen, dann ruft tsne selbstständig eien von dir vorbestimmte sub routine auf.

das ist die oben angegebene TSNE_NewData(...)

Dort kannst du dann code reni hauen.

die sub gibst du beim TSNE_Create_Client / TSNE_Create_Server mit an.

PS: es wäre wirklich besser, wenn du etwas source zeigen würdest. dann könnte man dir auch tips geben, wie man es integriert. es muss ja nicht alles sein. es reicht ja, wenn man den teil sieht, der das netzwerk angibt. du kannst mir den link zu dem source auch via pm schicken, falls du es nciht öffentlich machen willst.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 24.05.2012, 18:21    Titel: Antworten mit Zitat

Der Quellcode ist einige tausend Zeilen lang^^
Den veröffentliche ich hier sicherlich nicht zwinkern
Aber ich versuche mal den Netzwerkkram rauszuholen. Aber nicht heute, da hab ich leider keine Zeit. Evtl.morgen.
Schon mal vielen Dank für das Interesse und die angebotene Hilfe lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.05.2012, 22:35    Titel: Antworten mit Zitat

stevie1401 hat Folgendes geschrieben:
Der Quellcode ist einige tausend Zeilen lang^^
Den veröffentliche ich hier sicherlich nicht zwinkern
Der von Linux ist 15 Millionen Zeilen lang, das hier sind 21390 Zeilen, das hier ungefähr 13000 Zeilen.

Wie du siehst, ist die größe eine Softwareprojekts weder für eine Veröffentlichung noch für die Lizenz (die Beispiele sind alle GPL) entscheidend zwinkern Nur Mut
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.05.2012, 22:38    Titel: Antworten mit Zitat

TSNE_V3 ist auch 1741 Zeilen lang .. und das in Komprimierter (Mehrere Anweisungen pro Zeile) Form grinsen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 25.05.2012, 09:20    Titel: Antworten mit Zitat

So, hier der Netzwerkcode:
Code:

Proc sende(ByVal aString As String)
  Local String s
  s = aString
  net_send(Socket_Number_send, 69, s)
 
End Proc
Proc Net_init
 
 
  Global String ServerIP, StringFromServer, StringToServer
  Global Int ServerPort, Connected
 
  'Connected ist das Flag, ob mit dem Server verbunden ist oder nicht
  '0=nein,1=ja
  Connected = 0
 
  'StringFromServer ist der String, der vom Server empfangen wird
  'StringToServer ist der String, der an den Server gesendet werden soll
 
 
 
 
 
  'WINSOCK API - TELNET SERVER/CLIENT
  Global Const NET_ERR_IP = -1000
  Global Const NET_ERR_SOCKET = -1001
  Global Const NET_ERR_CONNECT = -1002
 
  ///  Global Const ServerPort = 7000 //23
  Global Const NET_PORT_HTTP = 80
  Global Const NET_PORT_POP3 = 110
  Global Const NET_PORT_SMTP = 25
  Global Const NET_PORT_TIME = 123
  Global Const NET_LISTEN_MAX = 5
  Global Const NET_MESS_WSA = 514
  Global Const NET_MESS_ORDER = 514
  Global Const NET_VERBINDUNG_MAX = 10
  Global Const NET_NEU_SENDE = 5000
  ' ### WinSock API ###
 
 
  'Diese Variablen brauchen nicht GLOBAL sein
  'Global RC As Long, X_Connect As Long, Bytes As Long
 
  Global X_Connect As Long
 
 
  Global Start_up_Data As WSADataType
  Global Socket_Number As Long
  Global Socket_Number_send As Long
  Global Read_Sock As Long
  Global Socket_Buffer As sockaddr
  Global Socket_Buffer_send As sockaddr
  Global Read_Sock_Buffer As sockaddr
 
  Global Const SOCKET_ERROR = -1
  Global Const SOCK_STREAM = 1
  Global Const AF_INET = 2
  Global Const SOCKADDR_SIZE = 16
  Global Const WSA_DESCRIPTIONLEN = 256
  Global Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1
  Global Const WSA_SYS_STATUS_LEN = 128
  Global Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1
 
  Global Const PF_INET_LENGTH = 4
 
  Global Const INADDR_NONE = &HFFFFFFFF
  '---async notification constants
  Global Const FD_READ = &H1
  Global Const FD_WRITE = &H2
  Global Const FD_OOB = &H4
  Global Const FD_ACCEPT = &H8
  Global Const FD_CONNECT = &H10
  Global Const FD_CLOSE = &H20
 
  Global Const MAXGETHOSTSTRUCT        = 1024
 
 
  Global Const PF_INET = 2
 
 
  Type sockaddr
    sin_family As Short
    sin_port As Short
    sin_addr As Long
    sin_zero As String * 8
  End Type
 
  Type WSADataType
    wVersion As Short
    wHighVersion As Short
    szDescription As String * WSA_DescriptionSize
    szSystemStatus As String * WSA_SysStatusSize
    iMaxSockets As Short
    iMaxUdpDg As Short
    lpVendorInfo As Long
  End Type
 
  Type HostEnt
    h_name As Long                              // official name of host
    h_aliases As Long                           // alias list
    // Pointer of array of pointers that elements point on the host's alias list
    h_addrtype As Int16                         // host address type (==AF_INET)
    h_length As Int16                           // length of address (==AF_INET_LENGTH)
    h_addr_list As Long                         // list of addresses
    // Pointer of array of pointers that elements point on the host's IP numbers
  EndType
 
  // It is assumed here that a network number
  // fits in 32 bits.
 
  Type NetEnt
    n_name As Long                              // official name of host
    n_aliases As Long                           // alias list
    n_addrtype As Short                         // net address type
    n_net As Long                               // network #
  EndType
 
  Type ServEnt
    s_name As Long                              // official service name
    s_aliases As Long                           // alias list
    s_port As Int16                             // port #
    s_proto As Long                             // protocol to use
  End Type
 
  Type ProtoEnt
    p_name As Long                              // official protocol name
    p_aliases As Long                           // alias list
    p_proto As Short                            // protocol #
  EndType
 
  Type HostEntMAX
    h_name As Long
    h_aliases As Long
    h_addrtype As String * 2
    h_length As String * 2
    h_addr_list As Long
    h_addr_res As String * 1008      ' MAXGETHOSTSTRUCT - SZHOSTENT
  End Type
 
  Declare LIB "wsock32"
  '---SOCKET FUNCTIONS
  Declare Function accept (ByVal s As Long, addr As sockaddr, addrlen As Long) As Long
  Declare Function bind (ByVal s As Long, addr As sockaddr, ByVal namelen As Long) As Long
  Declare Function listen (ByVal s As Long, ByVal backlog As Long) As Long
  Declare Function recv (ByVal s As Long, ByVal buf As Long, ByVal buflen As Long, ByVal flags As Long) As Long
  Declare Function send (ByVal s As Int, ByVal buf As String, ByVal buflen As Int, ByVal flags As Int) As Int
  Declare Function socket (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
  Declare Function closesocket (ByVal s As Int) As Int
  Declare Function inet_addr (ByVal cp As String) As Long
  Declare Function inet_ntoa (ByVal in As Long) As String    ' in is the 'C' defined in_addr structure
  Declare Function connect (ByVal s As Int, ByRef addr As sockaddr, ByVal namelen As Int) As Int
  Declare Function gethostbyname (ByVal hostname As String) As Long
  Declare Function gethostbyaddr (ByVal addr As Int, ByVal addrlen As Int, ByVal struct As Int) As Long
  '''' bisher nicht benutzt
  Declare Function getservbyport (ByVal port As Int, ByVal proto As String) As ServEnt
  Declare Function getservbyname (ByVal servname As String, ByVal proto As String) As ServEnt
  Declare Function getprotobynumber (ByVal proto As Int) As ProtoEnt
  Declare Function getprotobyname (ByVal name As String) As ProtoEnt
  '---WINDOWS EXTENSIONS
  Declare Function WSAStartup (ByVal wVR As Long, lpWSAD As WSADataType) As Long
  Declare Function WSACleanup () As Long
  Declare Function WSAGetLastError () As Long
  Declare Function WSAAsyncSelect (ByVal s As Long, ByVal hWnd As Long, ByVal wMsg As Long, ByVal lEvent As Long) As Long
 
  Local RC As Long
  RC = WSACleanup()
  RC = WSAStartup(&H101, Start_up_Data)
  If RC = SOCKET_ERROR
    Stop
    Exit Sub
  EndIf
 
End Proc

Procedure net_stop
  ~WSACleanup()
EndProc
Function net_Connect(adresse As Int, RemotePort As Int)
 
  'Local Long X_Connect
 
 
  //  If Socket_Number_send > 0 Then Return 0
  Socket_Number_send = socket(AF_INET, SOCK_STREAM, 0)
 
  If Socket_Number_send < 1 Then Return NET_ERR_SOCKET
 
  Socket_Buffer_send.sin_family = AF_INET
  Socket_Buffer_send.sin_port = htons(RemotePort) ' 23=telnet  '110=pop3  '25=smtp  '80=HTTP
  Socket_Buffer_send.sin_addr = adresse
  Socket_Buffer_send.sin_zero = String$(8, 0)
 
  X_Connect = connect(Socket_Number_send, Socket_Buffer_send, SOCKADDR_SIZE)
  If X_Connect <> 0
    X_Connect = closesocket(Socket_Number_send)
    Return NET_ERR_CONNECT
  Else
    X_Connect = WSAAsyncSelect(Socket_Number_send, fuxbauW.hWnd, &H202, FD_READ Or FD_CLOSE Or FD_ACCEPT Or FD_CONNECT)
    Return Socket_Number_send
  EndIf
  Return 0
EndFunction
Procedure net_read(read_sock)
  Local Int bytes, t, erg, count
  Dim Read_Buffer As String * 4096
 
 
 
  bytes = recv(read_sock, V:Read_Buffer, 4096, 0)
 
  If bytes > 0  Then
    StringFromServer = Left$(Read_Buffer, bytes)
  EndIf
 
EndProc
Procedure net_send(read_sock As Int, code As Int, send_Bytes As String)
  Local Int bytes, count
  bytes = send(read_sock, send_Bytes, Len(send_Bytes), 0)
EndProc
Function LookupIP(ByVal HostName As String) As String
  // Löst den IP Namen in eine Zahlen-Adresse um
  Local hHostEntPointer As Int
  Local lpHostEnt As HostEnt
  Local Int s, dwIPAddr
  Local String szIPAddr
  hHostEntPointer = gethostbyname(HostName)
  If (!hHostEntPointer)
    Message "Could not get IP address!", HostName, MB_OK | MB_ICONSTOP
  Else
    ' Copy the returned data in our own structure
    ' (WinSock allocates one HostEnt structure per thread only,
    ' i.e. the information becomes invalid after the next WSOCK call
    BMove hHostEntPointer, V:lpHostEnt, Len(HostEnt)
   
    // Convert the IP address into a dotted-decimal string
    BMove Long{lpHostEnt.h_addr_list}, *s, lpHostEnt.h_length
    szIPAddr = inet_ntoa(s)
    Return szIPAddr
  EndIf
EndFunction
Procedure net_wsa(Teilnehmer_ID As Int, port_mess As Int)
  ' In this Proc all messages from the WSA will receive
 
  Local Int f
  'Local X_Connect As Long
 
 
  If port_mess = FD_READ
    net_read(Teilnehmer_ID)
  EndIf
 
  If port_mess = FD_ACCEPT
   
   
    ' Es wird eine neue Teilnehmer_ID erzeugt, damit weitere Verbindungen aufgebaut werden koennen
    Teilnehmer_ID = accept(Socket_Number, Read_Sock_Buffer, Len(Read_Sock_Buffer))
   
  EndIf
 
  If port_mess = FD_CLOSE
   
   
    X_Connect = closesocket(Teilnehmer_ID)
   
    Connected = 0
   
  EndIf
 
  If port_mess = FD_CONNECT
   
  EndIf
 
  If port_mess = FD_WRITE
   
  EndIf
 
  If port_mess = FD_OOB
   
   
  EndIf
  X_Connect = WSAAsyncSelect(Teilnehmer_ID, fuxbauW.hWnd, &H202, FD_READ Or FD_CLOSE Or FD_ACCEPT)
EndProc
Sub fuxbauW_Message(hWnd As Int, Mess As Int, wParam As Int, lParam As Int)
  // Print  hWnd%, Mess%, wParam%, lParam%
  Select Mess
  Case NET_MESS_WSA
    lParam = LoWord(lParam) //FD_CLOSE
    net_wsa(wParam, lParam)
  Case NET_MESS_ORDER
    'Print "NET_MESS_ORDER"
  Default
   
  EndSelect
EndSub



Es geht eigentlich nur darum, von einem Windows-Prog aus einen String an TSNE zu senden. Mehr nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.05.2012, 09:38    Titel: Antworten mit Zitat

öm ... das sieht etwas nach server aus.

wenn ja, dann: kann es sein, das du nur einen Clienten verbinden lassen möchtest?, oder sollen auch mehrere clienten verbindungen gleichzeitig möglich sein?


MfG
TPM


PS: ab 16Uhr bin ich nicht mehr da. Komme Dann erst am Mo. abend wieder.
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 25.05.2012, 10:30    Titel: Antworten mit Zitat

öm ... das sieht etwas nach server aus.

Fast^^
Es ist der Client.
Der Server sieht allerdings sehr ähnlich aus.
Mit dem Server können sich eigentl. beliebig viele Clients verbinden.

Es geht doch nur darum, dass TSNE den API Befehl SEND richtig annimmt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.05.2012, 10:39    Titel: Antworten mit Zitat

im grunde müsste das ganze ungefär so aussehen. Der ganze andere "schmarn" ist mit TSNE überflüssig geworden.


Code:


Dim Shared String ServerIP, StringFromServer, StringToServer
Dim Shared Int ServerPort, Connected
Dim Shared Socket_Number_send As UInteger


Sub Net_init
Connected = 0
End Sub


Sub net_send(code As Int, send_Bytes As String)
Dim Bytes as UInteger
TSNE_Data_Send(Socket_Number_send, send_Bytes, Bytes)
End Sub


Sub sende(ByVal aString As String)
net_send(69, aString)
End Sub


Sub TSNE_NewData (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
StringFromServer = V_Data
'hier kannst du jetzt deine Nachricht verarbeiten
End Sub


Function net_Connect(adresse As Int, RemotePort As Int) as Integer
Dim RV as Integer = TSNE_Create_Client(Socket_Number_send, adresse, RemotePort, 0, 0, @TSNE_NewData)
If RV <> TSNE_Const_NoError Then Return -1
Return 0
End Function


'keine ahnung, was genau du da machst, aber netzwerkseitig brauchst du dieses "Callback" nicht (mehr)
Sub fuxbauW_Message(hWnd As Int, Mess As Int, wParam As Int, lParam As Int)
'// Print  hWnd%, Mess%, wParam%, lParam%
Select Mess
Case NET_MESS_WSA
'   lParam = LoWord(lParam) //FD_CLOSE
'   net_wsa(wParam, lParam)
Case NET_MESS_ORDER
   'Print "NET_MESS_ORDER"
'Default
End Select
End Sub



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 25.05.2012, 11:40    Titel: Antworten mit Zitat

Erst mal Danke für deine Mühe.
Vielleicht haben wir etwas an einander vorbei geschrieben.
Der Code hier ist vom Client.
Ich benötige allerdings Freebasic-Code für der TSNE-Server.
Die Windows-Clients bleiben, ich möchte jetzt den Windows-Server auf Freebasic portieren.

Da Problem ist, dass die Clients (s.o.) den TSNE-Server zwar connecten, aber keine Daten empfangen können, bzw. der TSNE-Server kekommt keine Daten, von den GFA-Windows-Clients.

Meine Frage ist also: Wie muss ich den TSNE-Server umbauen, damit er meine GFA-Windows-Clients versteht?

Ich sehe gerade, das wird beim Server wohl ähnlich sein, denke ich.
Ich probiere es einfach mal.
Und mit dem "Schmarn" gebe ich dir vollkommen Recht^^

LG
Stevie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.05.2012, 11:53    Titel: Antworten mit Zitat

Versuchs damit: http://ops.ath.cx/code?id=244


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stevie1401



Anmeldungsdatum: 04.07.2006
Beiträge: 133

BeitragVerfasst am: 31.05.2012, 19:03    Titel: Antworten mit Zitat

Ich habe den Code des Servers aus obigem Beispiel eben getestet - funktioniert 1a!!!
Super, vielen Dank!

Wenn ich jetzt auch meine Clients in Freebasic programmieren möchte, dann muss ich tsnev3 nehmen, oder? Also nicht das tsneplay, gell?

Vielen Dank PuppetMaster für deine Hilfe!

LG
Stevie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 31.05.2012, 19:09    Titel: Antworten mit Zitat

jo. richtig. wenn du den client in fb realisieren willst, bzw. wenn du ihn transferieren willst, ist es sinvoll tsne_V3 zu nehmen, und nicht TSNEPlay. Wegen dem schon vorhandenem Protokoll von dir.

Hilfe: NP .. freut mich, das ich helfen konnte, und es jetzt klapt!


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
madavid
Gast





BeitragVerfasst am: 15.06.2012, 11:58    Titel: Antworten mit Zitat

Hab gute Erfahrung mit webtropia, die Sache bei den VPS is halt, dass die nicht viel Leistung haben, aber von der Leitung her geht da schon was, meistens bis 100Mbit. Keyweb war da etwas lahm. Hetzner gibts auch noch, aber die haben eher root server, vielleicht etwas overkill.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter
Seite 3 von 5

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz