Sockets in new release

BlitzMax Forums/BlitzMax Programming/Sockets in new release

SillyPutty(Posted 2005) [#1]
Does anybody have a working example of a client/server app for multiplay ?

Sockets is very fuzzy to me :(


bradford6(Posted 2005) [#2]
***EDIT***

These programs work now.
to test on a single PC
1. save server.bmx and client.bmx
2. open 2 seperate instances of BMAX
3. run server first, the run client
4. type into client and hit enter...

or... run server on a Linux box and client on a MAC

I'll build on this when i get more time




SERVER


CLIENT



SillyPutty(Posted 2005) [#3]
ah thanks so much man.

I will give this a bash


SillyPutty(Posted 2005) [#4]
hmmm, it just hangs :(


bradford6(Posted 2005) [#5]
Ok Deux, I'll take a look at the code and fix it.

some pointers:
1. 127.0.0.1 is referred to as LOCALHOST or LOOPBACK. It is an IP address of your machine. This address is very handy for testing.

2. IP addresses are usually referred to by dotted ip notation. "1.2.3.4" . BlitzMAX uses Integers to refer to the same thing. 127.0.0.1 = 2130706433
I threw together the little conversion function to make it easier to present a dotted IP to Blitmax. Each OCTET is one byte (8 bits). In binary notation it could be written like this
11111111.10101010.10101010.00011111
each octet ranges from 0 to 255 decimal or 00000000 to 11111111 binary. I will add a range check to my func to test for this
Function Dotted_to_integer(Dotted_ip$)
		Dotted_ip$:+"."
		Local octet:String[4]
		For i = 0 To 3
			dot =  Dotted_ip$.find(".") ; octet[i] =  Dotted_ip$[0..dot]
			Dotted_ip$ = Dotted_ip$[dot+1..]
		Next
	Return (octet[0].toint() Shl 24) + (octet[1].toint() Shl 16) + (octet[2].toint() Shl 8) + octet[3].toint()
End Function 

My_IP$ = "127.0.0.1"

Print MY_IP$+" = "+Dotted_to_integer(MY_IP$)



I had the client/server stuff working fine then screwed around with it.(it was late) I will fix it later today and post


bradford6(Posted 2005) [#6]
*** UPDATED*** see my first porst above


Warpy(Posted 2005) [#7]
(digging this up because I'm doing multiplayer stuff)

The code in this post was hanging for me - you need to change
foo$ = ReadLine$(stream)
to
If SocketReadAvail(client) Then foo$ = ReadLine$(stream)

readline halts while it waits for input if there's nothing available, I think.