Rottnet problem

Blitz3D Forums/Blitz3D Programming/Rottnet problem

ozak(Posted 2005) [#1]
Hi. I got a few problems getting ROTTNet to work.
The samples work fine, but my own code fails to run.
(I can create the server and join it locally, but I can't join a running server from another instance of my app. It timeouts.)

The network code so far is displayed below
; Network code

; Are we the server?
Global Net_I_Am_Server = False

; Net client/server handles
Global Net_Server_Handle
Global Net_Client_Handle

; Start network
Function Net_StartServer()

	Net_I_Am_Server = True
	
	Net_Server_Handle = RN_StartHost(CFG_SERVERPORT, "", CFG_MAXPLAYERS, CFG_SERVERLOG)
		
	If Net_Server_Handle = 0
	
		RuntimeError("Could not start server on port " + CFG_SERVERPORT)
		
	End If

	HUD_AddConsoleLine("Server started on " + CFG_SERVERIP)

End Function

; Start client
Function Net_StartClient()

	; Set clientport + server port + 1
	ClientPort% = CFG_SERVERPORT + 1
	
	; If we're the server bump client port one up
	If Net_I_Am_Server
	
		ClientPort = ClientPort + 1		
		
	End If
		
	; Attempt connection
	Net_Client_Handle = RN_Connect(CFG_SERVERIP, CFG_SERVERPORT, ClientPort, CFG_NAME, "", CFG_CLIENTLOG)
	Select Net_Client_Handle
		Case RN_PortInUse : RuntimeError "Port " + ClientPort + " already in use!"
		Case RN_HostNotFound : RuntimeError "Server not found!"
		Case RN_TimedOut : RuntimeError "Server did not respond within reasonable time"
		Case RN_ServerFull : RuntimeError "Server full"
	End Select

	; Tell user if not server
	If Not NET_I_Am_Server
	
		HUD_AddConsoleLine("You joined the server")

	End If	

End Function

; Update networking
Function Net_Update()

	; Parse messages
	For M.RN_Message = Each RN_Message
		Select M\MessageType

			; Host left!
			Case RN_HostHasLeft
				RuntimeError "Connection to server lost!"

			; Player joined		
			Case RN_NewPlayer
				HUD_AddConsoleLine("" + RN_PlayerName$(Net_Server_Handle, M\FromID) + " joined game from " + DottedIP(RN_PlayerIP(Net_Server_Handle, M\FromID)))
				
		End Select
		Delete M
		
	Next
	
End Function


For the record I did consider using BlitzNet which comes with a much more elaborate example, but the lack of guaranteed delivery makes it a nogo. (Well, the free one does anyway :)