Home
Products
Community
Manuals
Contact
Login or Signup

Code archives/Networking/gnet conversion

This code has been declared by its author to be Public Domain code.

Download source code

gnet conversion by boomboommax(Posted 1+ years ago)
er yup
Type networkgnet
	Const host:String = "www.blitzbasic.com"
	Const hostget:String = "/gnet/gnet.php"
	
	Const port:Int = 80
	
	Global socket:tsocket
	Global stream:tsocketstream
	
	Function gnet_esc:String(t:String)
		
		t = Replace(t,"&","")
		t = Replace(t,"%","")
		t = Replace(t,"'","")
		t = Replace(t,Chr(34),"")
		t = Replace(t," ","_")
		
		Return t
		
	End Function
	
	Function gnet_open:tsocketstream(opt:String)
		
		networkgnet.socket = CreateTCPSocket()
		
		ConnectSocket(networkgnet.socket,HostIp(networkgnet.host),networkgnet.port)
		networkgnet.stream = CreateSocketStream(networkgnet.socket,True)
		
		WriteLine networkgnet.stream,"GET "+networkgnet.hostget+"?opt="+opt+" HTTP/1.0"
		WriteLine networkgnet.stream,"HOST: "+networkgnet.host
		WriteLine networkgnet.stream,""
		
		FlushStream(networkgnet.stream)
		
		While ReadLine(networkgnet.stream) <> ""
		Wend
		
		Return networkgnet.stream
		
	End Function
	
	Function gnet_exec(opt:String,game:String,server:String)
		
		opt = opt+"&game="+networkgnet.gnet_esc(game)
		
		If server <> "" opt = opt+"&server="+networkgnet.gnet_esc(server)
		
		Local t:tsocketstream = networkgnet.gnet_open(opt)
		If Not t Then Return False
		
		Local ok = False
		If ReadLine(t) = "OK" Then ok = True
		
		CloseSocket(networkgnet.socket)
		Return ok
		
	End Function
	
	Function gnet_ping:String()
		
		Local t:tsocketstream = networkgnet.gnet_open("ping")
		If Not t Then Return False
		
		Local ip:String = ReadLine(t)
		
		CloseSocket(networkgnet.socket)
		Return ip
		
	End Function
	
	Function gnet_addserver(game:String,server:String="")
		
		Return networkgnet.gnet_exec("add",game,server)
		
	End Function
	
	Function gnet_refreshserver(game:String,server:String="")
		
		Return networkgnet.gnet_exec("ref",game,server)
		
	End Function
	
	Function gnet_removeserver(game:String)
		
		Return networkgnet.gnet_exec("rem",game,"")
		
	End Function
	
	Function gnet_listservers(game:String="")
		
		For Local n:networkgnet_server = EachIn networkserverlist
			networkserverlist.remove(n)
			n = Null
		Next
		
		FlushMem
		
		Local t:tsocketstream = networkgnet.gnet_open("list")
		If Not t Then Return False
		
		Local t_game:String
		Local t_server:String
		Local t_ip:String
		
		Repeat
			t_game = ReadLine(t)
			If t_game = "" Then Exit
			
			t_server = ReadLine(t)
			t_ip = ReadLine(t)
			
			If game = "" Or game = t_game
				Local p:networkgnet_server = New networkgnet_server
				
				p.game = t_game
				p.server = t_server
				p.ip = t_ip
				
				networkserverlist.addfirst(p)
			EndIf
		Forever
		
		CloseSocket(networkgnet.socket)
		Return 1
		
	End Function
End Type


Global networkserverlist:TList = New TList

Type networkgnet_server
	Field game:String
	Field server:String
	Field ip:String
End Type

Comments

necky(Posted 1+ years ago)
spot on! Thanks again!:O)


Regular K(Posted 1+ years ago)
I fixed some problems (warning about header and problems recongizing games).

Heres my fixed gnet_listservers function:


Except for that, good job :D


Code Archives Forum