 |
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 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.02.2010, 21:01 Titel: Server -> mehrere Anfragen von Clienten gleichzeitig be.. |
|
|
Hallo zusammen,
gibt es eine Möglichkeit, Anfragen von Clienten gleichzeitig zu bearbeiten.
Mein Code arbeitet erst eine if Abfrage ab.
Während dieser Zeit kommt aber schon die nächste Anfrage eines anderen Clienten.
Nun muss dieser Client aber warten, bis die if Abfrage abgearbeitet wurde.
Das Hauptprogramm befindet sich in einer Dauerschleife do loop.
Hoff ihr könnt mir helfen |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 11.02.2010, 21:06 Titel: |
|
|
Hallo,
statt mit einer großen Ereignisschleife im Hauptprogramm könntest du mit mehreren Threads (sozusagen parallel laufende SUBs) arbeiten, die gleichzeitig auf Anfragen von Clients warten und diese dann entsprechend verarbeiten. In der Befehlsreferenz finden sich dazu weitere Informationen etwa unter THREADCREATE und THREADWAIT.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.02.2010, 21:18 Titel: |
|
|
Code: |
screenres 300,300,32
#include "netwin.bi"
'server.bas
Dim As Any Ptr i,ii,iii
Sub MyThread ()
Dim As FDSOCKET hServer,hClient
Dim As SOCKADDR serveraddr
Dim As SOCKADDR clientaddr
Dim As WSADATA wsdata
Dim As Ubyte Ptr lpBuffer
Dim As Integer addrsize,ret
ret=WSAStartup(VERSION_11,@wsdata)
If ret<>0 Then
? "server error: WSAStartup!"
Sleep:End -1
End If
With serveraddr
.sin_family =AF_INET
.sin_port =build_port(40000)
.sin_addr =INADDR_ANY
End With
hServer=NetSocket(AF_INET,SOCK_STREAM)
If hServer<0 Then
? "server error: socket!"
WSACleanup
Sleep:End -1
Endif
AddrSize=sizeof(SOCKADDR)
ret=NetBind(hServer,@Serveraddr,@AddrSize)
If ret<0 Then
? "server error: bind!"
NetClose(hServer)
WSACleanup
Sleep:End -1
End If
ret=NetListen(hServer)
If ret<0 Then
? "server error: listen!"
NetClose(hServer)
WSACleanup
Sleep:End -1
End If
Do
Print "server: wait on client"
hClient=-1
While (hClient<0) And (Len(Inkey)=0)
hClient=NetAccept(hServer,@clientaddr,@AddrSize)
Wend
dim message as string
ret=NetReciveString(hClient,message)
If message ="HALLO" Then
Print "send message to client"
NetSendString(hClient,"Hallo zurück")
Else
? "server error: NetSendString!"
End If
Loop
End Sub
Sub MyThread1 ()
Dim As FDSOCKET hServer,hClient
Dim As SOCKADDR serveraddr
Dim As SOCKADDR clientaddr
Dim As WSADATA wsdata
Dim As Ubyte Ptr lpBuffer
Dim As Integer addrsize,ret
ret=WSAStartup(VERSION_11,@wsdata)
If ret<>0 Then
? "server error: WSAStartup!"
Sleep:End -1
End If
With serveraddr
.sin_family =AF_INET
.sin_port =build_port(40000)
.sin_addr =INADDR_ANY
End With
hServer=NetSocket(AF_INET,SOCK_STREAM)
If hServer<0 Then
? "server error: socket!"
WSACleanup
Sleep:End -1
Endif
AddrSize=sizeof(SOCKADDR)
ret=NetBind(hServer,@Serveraddr,@AddrSize)
If ret<0 Then
? "server error: bind!"
NetClose(hServer)
WSACleanup
Sleep:End -1
End If
ret=NetListen(hServer)
If ret<0 Then
? "server error: listen!"
NetClose(hServer)
WSACleanup
Sleep:End -1
End If
Do
Print "server: wait on client"
hClient=-1
While (hClient<0) And (Len(Inkey)=0)
hClient=NetAccept(hServer,@clientaddr,@AddrSize)
Wend
dim message as string
ret=NetReciveString(hClient,message)
If message ="HALLO" Then
Print "send message to client"
NetSendString(hClient,"Hallo zurück")
Else
? "server error: NetSendString!"
End If
Loop
End Sub
i = ThreadCreate(Cast(Any Ptr,@MyThread))
ThreadWait (i)
ii = ThreadCreate(Cast(Any Ptr,@MyThread1))
ThreadWait (ii)
WSACleanup
sleep
|
so zum Beispiel?
Wäre für einen kleinen Beispielscode dankbar
Cu Andy |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 12.02.2010, 13:26 Titel: |
|
|
Kein Kommentar...sieht wohl aus, dass ich da was falsch gemacht habe
Cu Andy |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 12.02.2010, 17:53 Titel: |
|
|
Danke für die Antwort @2... |
|
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.
|
|