|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 16.05.2012, 15:28 Titel: |
|
|
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 |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.05.2012, 11:38 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.05.2012, 11:57 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.05.2012, 14:19 Titel: |
|
|
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 |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.05.2012, 16:20 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.05.2012, 16:21 Titel: |
|
|
Ohne quellcode können wir dir hier nicht wirklich helfen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.05.2012, 18:08 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.05.2012, 18:12 Titel: |
|
|
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 |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.05.2012, 18:21 Titel: |
|
|
Der Quellcode ist einige tausend Zeilen lang^^
Den veröffentliche ich hier sicherlich nicht
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 |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 24.05.2012, 22:35 Titel: |
|
|
stevie1401 hat Folgendes geschrieben: | Der Quellcode ist einige tausend Zeilen lang^^
Den veröffentliche ich hier sicherlich nicht | 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 Nur Mut |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.05.2012, 22:38 Titel: |
|
|
TSNE_V3 ist auch 1741 Zeilen lang .. und das in Komprimierter (Mehrere Anweisungen pro Zeile) Form
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 25.05.2012, 09:20 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 25.05.2012, 09:38 Titel: |
|
|
ö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 |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 25.05.2012, 10:30 Titel: |
|
|
ö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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 25.05.2012, 10:39 Titel: |
|
|
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 |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 25.05.2012, 11:40 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 31.05.2012, 19:03 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 31.05.2012, 19:09 Titel: |
|
|
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 |
|
|
madavid Gast
|
Verfasst am: 15.06.2012, 11:58 Titel: |
|
|
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 |
|
|
|
|
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.
|
|