WaitNetwork.pbi
Code: Select all
Procedure WaitNetworkData(conn, length=500)
*buff=AllocateMemory(length)
*overbuff=AllocateMemory(length)
While ne=0:ne=NetworkClientEvent(conn):Delay(1):Wend
Select ne
Case #PB_NETWORKEVENT_DATA
ln=ReceiveNetworkData(conn,*buff,length)
If ln=length
Repeat:Delay(1):Until ReceiveNetworkData(conn,*overbuff,length)<length
EndIf
Default
;
EndSelect
FreeMemory(*overbuff)
ProcedureReturn *buff
EndProcedure
Macro Pk(a,b)
a=Peek#b#(*loc)
FreeMemory(*loc)
EndMacro
Macro WaitNetworkByte(conn,var)
*loc=WaitNetworkData(conn,2)
Pk(var,B)
EndMacro
Macro WaitNetworkChar(conn,var)
*loc=WaitNetworkData(conn,SizeOf(Character)+1)
Pk(var,C)
EndMacro
Macro WaitNetworkDouble(conn,var)
*loc=WaitNetworkData(conn,9)
Pk(var,D)
EndMacro
Macro WaitNetworkLong(conn,var)
*loc=WaitNetworkData(conn,5)
Pk(var,L)
EndMacro
Macro WaitNetworkWord(conn,var)
*loc=WaitNetworkData(conn,3)
Pk(var,W)
EndMacro
Macro WaitNetworkFloat(conn,var)
*loc=WaitNetworkData(conn,5)
Pk(var,F)
EndMacro
Macro WaitNetworkQuad(conn,var)
*loc=WaitNetworkData(conn,9)
Pk(var,Q)
EndMacro
Macro WaitNetworkString(conn,car,length=499)
*loc=WaitNetworkData(conn,length+1)
Pk(var,S)
EndMacro
Server Code
Code: Select all
InitNetwork()
conn=CreateNetworkServer(#PB_Any,12345,#PB_Network_TCP)
If conn=0:MessageRequester("Network Error","Unable to Create Server!"):End:EndIf
OpenConsole()
PrintN("Server Started - ESC to Exit")
*buff = AllocateMemory(101)
PokeS(*buff,"S"); prefix all sent data with 'S'
Repeat
Delay(1)
ne=NetworkServerEvent()
if ne
cid = EventClient()
If ne=#PB_NetworkEvent_Connect:PrintN("client "+str(cid)+" connected"):EndIf
If ne=#PB_NetworkEvent_Data
ln=ReceiveNetworkData(cid,*buff+1,100)
SendNetworkData(cid,*buff,ln+1)
PrintN("client "+str(cid)+" sent data - echoing")
EndIf
If ne=#PB_NetworkEvent_Disconnect:PrintN("client "+str(cid)+" disconnected"):EndIf
EndIf
Until Inkey()=Chr(27)
FreeMemory(*buff)
End
Code: Select all
IncludeFile "WaitNetwork.pbi"
InitNetwork()
conn=OpenNetworkConnection("127.0.0.1",12345,#PB_Network_TCP)
If conn=0:MessageRequester("Network Error","Unable to Create Server!"):End:EndIf
OpenConsole()
*messagedata=AllocateMemory(8)
PokeS(*messagedata,"12345678")
PrintN("Connected to Server")
SendNetworkString(conn,"Hello")
Print("Sent String 'Hello'... ")
WaitNetworkString(conn,response$)
PrintN("Received String '"+response$+"');should return 'SHello'
SendNetworkData(conn,*messagedata,1)
Print("Sent Byte '"+Str(PeekB(*messagedata))+"'... ")
WaitNetworkByte(conn,byt.b)
PrintN("Received Byte '"+Str(byt)+"');should return 83 - Chr("S")
SendNetworkData(conn,*messagedata,2)
Print("Sent Word '"+Str(PeekW(*messagedata))+"'... ")
WaitNetworkWord(conn,wrd.w)
PrintN("Received Word '"+Str(wrd)+"');should return 21297
SendNetworkData(conn,*messagedata,4)
Print("Sent Long '"+Str(PeekL(*messagedata))+"'... ")
WaitNetworkLong(conn,lng.l)
PrintN("Received Long '"+Str(lng)+"');should return 1395733043
PrintN("")
PrintN("Press Enter to Exit")
Input()