PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Передача данных


Передача данных

Сообщений 1 страница 6 из 6

1

Не получается настроить передачу данных через локальную сеть о координатах кубика, то что клиент подключается и отключается пишет нормально, а вот координаты кубика не перемещает ни в какую.
Вот код:

Код:
InitSprite()
InitNetwork()
  If StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(x, y, Text, RGB(255, 0, 0))
    StopDrawing()
  EndIf
  EndProcedure
  OpenNetworkConnection("192.168.1.100", 1010)
OpenWindow(0, 0, 0, 500, 500, "game", #PB_Window_ScreenCentered | #PB_Window_SystemMenu) 
OpenWindowedScreen(WindowID(0), 0, 0, 500, 500, 0, 0, 0)
CreateSprite(0, 20, 20)
StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255,0,0))
StopDrawing()
             XPos1 = WindowMouseX(0)
YPos1 = WindowMouseY(0)
*Buffer = AllocateMemory(1000)
*Buffer2 = AllocateMemory(1000)

If CreateNetworkServer(0, 1010)


  Repeat
      FlipBuffers()
      ClearScreen(RGB(255, 255, 255))
        DisplaySprite(0, XPos1, YPos1)
        SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
      
      Select SEvent
                
        Case #PB_NetworkEvent_Connect
                    MessageRequester("PureBasic - Server", "Клиент подключился...", 0)
          DisplaySprite(0, *Buffer, Buffer2)

  
        Case #PB_NetworkEvent_Data
            ReceiveNetworkData(ClientID, *Buffer, 1000)
          ReceiveNetworkData(ClientID, *Buffer2, 1000)
  
        Case #PB_NetworkEvent_Disconnect
          MessageRequester("PureBasic - Server", "Клиент отключился...", 0)
    
      EndSelect
    EndIf

Until WindowEvent() = #PB_Event_CloseWindow
Else
ConnectionID = OpenNetworkConnection("192.168.1.100", 1010)
If ConnectionID
             SendNetworkData(ClientID, *XPos1, XPos1)
             SendNetworkData(ClientID, *YPos1, YPos1)
  
Else
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
  
End   
EndIf

0

2

Foreword написал(а):

а вот координаты кубика не перемещает ни в какую.

Разве в коде передаются и принимаются координаты?
Что-то я не увидел где.

0

3

Код:
XPos1 = WindowMouseX(0)
YPos1 = WindowMouseY(0)
*Buffer = AllocateMemory(1000)
*Buffer2 = AllocateMemory(1000)
             SendNetworkData(ClientID, *XPos1, XPos1)
             SendNetworkData(ClientID, *YPos1, YPos1)
            ReceiveNetworkData(ClientID, *Buffer, 1000)
          ReceiveNetworkData(ClientID, *Buffer2, 1000)

как-то так

0

4

Важно не только наличие кода, но и его правильное расположение в программе.
Скажем, кусок кода из второго сообщения, где находится в программе?
Прочитайте в справке значение третьего аргумента функций SendNetworkData() и ReceiveNetworkData(). Что там должно быть и что у вас?
Почему в третьем аргументе функции ReceiveNetworkData(), число 1000? Оно взято с потолка? Как тогда программа будет работать?
Где у вас перемещение кубика при получении новых координат?

0

5

Есть такая полезная штука - комментарий.
И ее нужно применять.
Чтобы не пришлось другим (да и себе самому но попозже) догадываться - что хотел сделать автор некоторым куском кода.

Извините за нравоучение.

0

6

Чтобы прочитать значения  peek(*Buffer )

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Передача данных