Well, let's begin:
Host:
Join:
UpdateClient:
ServerUpdate:
This is only a sample of what you should do. It uses BitStreams instead of Strings (much much better). And please note that only internal messages are broadcast by server automatically. User messages (50-255) must be broadcasted manually.
Post any question you have here.
Cheers.
Host:
; Initialize the server. Global Server=RN_GetRakServerInterface() ok=RN_ServerStart(Server,8,0,0,60069)
Join:
;Initialize the client ip$ = "localhost" ; CHANGE THIS TO THE SERVER IP Global Client=RN_GetRakClientInterface() RN_ClientConnect(Client,ip$,60069,0,0,0)
UpdateClient:
;Receiving packet=RN_ClientReceive(Client) While (packet) msg$=RN_PacketGetData(packet) BitStreamIN=RN_BitStreamCreateFromPacket(packet) MessageID=RN_BitStreamReadUnsignedChar(BitStreamIN) ;MSG TYPE Select MessageID Case ID_CONNECTION_REQUEST_ACCEPTED Print "I am accepted, i am number : " + RN_ClientGetPlayerIndex(Client) Case ID_REMOTE_NEW_INCOMING_CONNECTION Print "New Remote Incoming Connection:" + RN_PacketGetplayerIndex(packet) Case ID_DISCONNECTION_NOTIFICATION Print "We have been disconnected!" Case ID_REMOTE_DISCONNECTION_NOTIFICATION Print "Remote Client Disconnected:" + RN_PacketGetplayerIndex(packet) Case ID_REMOTE_NEW_INCOMING_CONNECTION Print "New Client Connected" Case ID_REMOTE_EXISTING_CONNECTION Print "A Client Was Already Connected : " + RN_PacketGetplayerIndex(packet) Case ID_RECEIVED_STATIC_DATA Print "Server Static Data" Case ID_REMOTE_STATIC_DATA Print "Remote Static Data: " + RN_PacketGetplayerIndex(packet) + " : " + RN_BitStreamGetData(RN_ClientGetStaticClientData(Client,RN_PacketGetplayerID(packet))) ;User Defined Case ID_CHAT Print "Chat(" + RN_PacketGetplayerIndex(packet) + "): " + Mid(msg,2,Len(msg)-1) Default Print msg$ End Select packet=RN_ClientDeallocatePacket(Client,Packet) packet=RN_ClientReceive(Client) Wend
ServerUpdate:
;Receiving packet=RN_ServerReceive(Server) While (packet) msg$=RN_PacketGetData(packet) BitStreamIN=RN_BitStreamCreateFromPacket(packet) MessageID=RN_BitStreamReadUnsignedChar(BitStreamIN) ;MSG TYPE Select MessageID Case ID_NEW_INCOMING_CONNECTION Print "New Incoming Connection" Print "Player Number: "+RN_PacketGetplayerIndex(packet) Case ID_DISCONNECTION_NOTIFICATION Print "Client Was Disconnected:"+RN_PacketGetplayerIndex(packet) Case ID_RECEIVED_STATIC_DATA Print "Static Data Client:"+RN_PacketGetplayerIndex(packet)+" : "+RN_BitStreamGetData(RN_ServerGetStaticClientData(Server,RN_PacketGetplayerID(packet))) Case ID_CONNECTION_LOST Print "Disconnected Player: "+RN_PacketGetplayerIndex(packet) Case ID_CHAT Print "Chat Message: "+Mid(msg,2,Len(msg)-1) ;BroadCast Message to All except incoming player ;RN_ServerSend1(Server,msg$,Len(msg$)+1,HIGH_PRIORITY,RELIABLE_ORDERED,0,RN_PacketGetplayerID(packet),1) Case ID_MOUSE_UPDATE ; User defined, mouse position. len1 = RN_BitStreamReadUnsignedChar(BitStreamIN) str1$ = RN_BitStreamRead(BitStreamIN,len1) len2 = RN_BitStreamReadUnsignedChar(BitStreamIN) str2$ = RN_BitStreamRead(BitStreamIN,len2) X=RN_BitStreamReadUnsignedShort(BitStreamIN) Y=RN_BitStreamReadUnsignedShort(BitStreamIN) Print str1$ Print str2$ Print x Print y Flip ;Color 0,255,0 ;Rect X-5,Y-5,10,10,0 Default Print "Unknown Message Type (Type = " + Asc(Mid(msg,1,1)) + ")" End Select ;Free Packet packet=RN_ServerDeallocatePacket(Server,packet) packet=RN_ServerReceive(Server) Wend
This is only a sample of what you should do. It uses BitStreams instead of Strings (much much better). And please note that only internal messages are broadcast by server automatically. User messages (50-255) must be broadcasted manually.
Post any question you have here.
Cheers.