Участник
Активность: 4 мес. назад
еще актуально?
Помогите пожалуйста разобраться в brl.socket на простом работающем примере. Задача: передача данных между приложениями по протоколу UDP. Пример кода:
Сервер:
Import mojo
Import brl
#MOJO_AUTO_SUSPEND_ENABLED=False
Class TestApp Extends App
Field socketTest:Socket = New Socket
Field dataSend:DataBuffer
Method OnCreate:Int()
SetUpdateRate(30)
socketTest = New Socket("datagram")
socketTest.Bind("localhost", 12345)
socketTest.Accept()
dataSend = New DataBuffer(32)
dataSend.PokeInt(0, 1)
Return 0
End
Method OnUpdate:Int()
If KeyDown(KEY_SPACE) Then
socketTest.Send(dataSend, 0, 32)
EndIf
Return 0
End
Method OnRender:Int()
Cls(0, 0, 0)
SetColor(255, 255, 255)
DrawText("Test Server", 0, 0)
If KeyDown(KEY_SPACE) Then
DrawText("send: ", 10, 30)
DrawText(dataSend.PeekInt(0), 100, 30)
EndIf
Return 0
End
End Class
Function Main:Int()
New TestApp()
Return 0
End Function
Клиент:
Import mojo
Import brl
#MOJO_AUTO_SUSPEND_ENABLED=False
Class TestApp Extends App
Field socketTest:Socket = New Socket
Field dataRecive:DataBuffer
Method OnCreate:Int()
SetUpdateRate(30)
socketTest = New Socket("datagram")
socketTest.Bind("localhost", 12345)
socketTest.Accept()
dataRecive = New DataBuffer(32)
dataRecive.PokeInt(0, 0)
Return 0
End
Method OnUpdate:Int()
socketTest.Receive(dataRecive, 0, 32)
Return 0
End
Method OnRender:Int()
Cls(0, 0, 0)
SetColor(255, 255, 255)
DrawText("Test Client", 0, 0)
DrawText("connect", 0, 10)
DrawText(socketTest.RemoteAddress(), 60, 10)
DrawText("recive: ", 10, 40)
DrawText(dataRecive.PeekInt(0), 100, 40)
Return 0
End
End Class
Function Main:Int()
New TestApp()
Return 0
End Function