m0nk3yI3unz Posted December 18, 2007 Share Posted December 18, 2007 Heya all. Im wondering the best way to manage multiple connections using the same IP and Port? I -can- have two scripts for this - I.E. one for listening for connections and getting socket IDs (and possibly assigning those socket IDs to a file) and one for servicing those sockets. Problem is, I have no idea how or even if I can transfer those same connections... Any help? :? -Monkey Monkeh. Link to comment Share on other sites More sharing options...
xzaz Posted December 18, 2007 Share Posted December 18, 2007 expandcollapse popup#include"GUIConstants.au3" Global $MainSocket Global $ConnectedSocket = -1 dim $ConnectedSocket[101] dim $recv[101] $confirmation = 0 $IP = InputBox("serverip","Insert the serverip",@IPAddress2) $port = 65432 $maxcon = 100 $MaxLength = 2048 for $i = 1 to 100 step 1 $ConnectedSocket[$i] = -1 Next TCPStartUp() $MainSocket = TCPListen($IP, $port, $maxcon ) If $MainSocket = -1 Then MsgBox(16,"Error","Error!("&@error&")"&@CRLF&"This server will be terminated!") Exit 0 Endif $winwidth = 300 $buttonwidth = 50 GUICreate("My Server (IP: " & $IP & ")",$winwidth,250) $edit = GUICtrlCreateEdit("",10,10,280,180) $Clearlog = GuiCtrlCreateButton("Clearlog",($winwidth-$buttonwidth)/2, 220, $buttonwidth) GUISetState() GUICtrlSetData($edit,"Server up and running!"& @CRLF & GUICtrlRead($edit)) while 1 $msg = GUIGetMsg() if $msg = $GUI_EVENT_CLOSE Then for $i = 1 to 100 step 1 if $ConnectedSocket[$i] <> -1 Then EndIf Next tcpshutdown() Exit 0 EndIf if $msg = $Clearlog Then GuiCtrlSetData($edit,"") Endif for $i = 1 to 100 step 1 if $ConnectedSocket[$i] <> -1 Then $recv[$i] = tcprecv($ConnectedSocket[$i], 512) if $recv[$i] <> "" Then for $j = 1 to 100 step 1 if $ConnectedSocket[$j] <> -1 Then If @error Then GUICtrlSetData($edit,"Error: " & "There is a error @number2 -"&@error & @CRLF & GUICtrlRead($edit)) ;Error 2 ;-----------------LOGIN CHECK----------------- $data = StringSplit($recv[$i],",") if Not @error Then if $data[1] = "login" Then $userread = IniReadSection("users.ini",$data[2]) if Not @error then if $userread[1][1] = $data[3] Then GUICtrlSetData($edit,"> " & "User has logged in! id="&$data[2] & @CRLF & GUICtrlRead($edit)) TCPSend($ConnectedSocket[$i],"Loggedin") Endif Endif Endif Endif ;/----------------LOGIN CHECK----------------- ;-----------------DC CHECK----------------- $data2 = StringSplit($recv[$i],"-") if Not @error Then if $data2[1] = "DC" Then GUICtrlSetData($edit,"> " & "User has been DC'ed="&$data2[2] & @CRLF & GUICtrlRead($edit)) EndIf Endif ;/----------------DC CHECK----------------- GuiCtrlSetData($edit,"> "& $recv[$i] &@CRLF& GUICtrlRead($edit)) EndIf Next EndIf Else $ConnectedSocket[$i] = tcpaccept($MainSocket) if $ConnectedSocket[$i] <> -1 Then TCPSend($ConnectedSocket[$i],"Connection initialized") GUICtrlSetData ($edit,"> User connected - Socket("& $i &")"& @crlf & guictrlread($edit)) Endif EndIf Next WEnd Func SocketToIP($SHOCKET) Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]") Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _ "ptr",DLLStructGetPtr($sockaddr),"int_ptr",DLLStructGetSize($sockaddr)) If Not @error And $aRet[0] = 0 Then $aRet = DLLCall("Ws2_32.dll","str","inet_ntoa","int",DLLStructGetData($sockaddr,3)) If Not @error Then $aRet = $aRet[0] Else $aRet = 0 EndIf $sockaddr = 0 Return $aRet EndFunc Its just a script i scrambled and used. Maby you can get something out of it. Small Color Picker v0.2 | Travian bot Link to comment Share on other sites More sharing options...
m0nk3yI3unz Posted December 19, 2007 Author Share Posted December 19, 2007 Thank you very very much. This helped immensely I had originally wanted to do something completely different..... Oi. Again, thanks! -Monkey Monkeh. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now