TCP or UDP timeout
BlitzMax Forums/BlitzMax Beginners Area/TCP or UDP timeout
| ||
Why does this code not work?Framework BRL.Socket Import BRL.System Import BRL.SocketStream Import BRL.StandardIO Function Connect(serverIP$,port,timeout) Local serverIPN = IPtoInt(serverIP$) Local socket=CreateTCPSocket() Local connect=ConnectSocket(socket,serverIPN,port) Local starttime=MilliSecs() Repeat endtime=MilliSecs() passedtime=(endtime-starttime) Until passedtime >= timeout Or connect If passedtime >= timeout connect=2 Else Local stream=CreateSocketStream(socket) EndIf Return connect Function IPtoInt(serverIP$) serverIP$:+"." Local sect:String[4] For i = 0 To 3 part = serverIP$.find(".") sect[i] = serverIP$[0..part] serverIP$ = serverIP$[part+1..] Next Return (sect[0].toint() Shl 24) + (sect[1].toint() Shl 16) + (sect[2].toint() Shl 8) + sect[3].toint() End Function End Function time=MilliSecs() out=connect("82.2.199.245",80,1000) Print out timepassed=MilliSecs()-time Print timepassed As you can see I set my own timeout but instead out is printed 20 seconds later after i call my connect function. I notice also that if i use udp it will say its connected even if the ip cannot be reached. is this a bug? |
| ||
Your own timeout makes no difference. If you put a print "Test" after the ConnectSocket line you will realize that this one is the function that defines the timeout. Its internal. The only thing your repeat does afterwards is simply running once and thats it. If you want your own timeout on connection you need to do you own ConnectSocket function. |
| ||
... i thought that was it. this should be implemented. although i dont know how. btw quick response. i was beginning to think theres no one here. want to try explaining why more other post doesnt work? http://www.blitzmax.com/Community/posts.php?topic=57378 Oh my timeout works now. :) well if its the right ip address my timeout will work. otherwise it will loop for 20 seconds. IMO BlitzMax should have been made with PHP functions. They're good and they have options. I know for creating files they use php funcs but why not for sockets and stuff to do with ip's And this Still doesnt explain why UDP connects and says its connected when the port isnt open. Ill try posting in the bug section. No one seems to have noticed this. |