dzencot

Участник

Активность: 11 мес. назад

  1. в прошлом году
    Mon May 30 09:46:02 2016

    еще актуально?

  2. 3 г. назад
    Fri Jun 6 03:40:50 2014

    Помогите пожалуйста разобраться в 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