BrettF Posted April 5, 2008 Share Posted April 5, 2008 Argh. I can't see why, but I keep getting error 10048 (socket in use) and I don't know why! Here is a snippet of my code. Server: expandcollapse popup#include <GUIConstants.au3> #Include <Date.au3> TCPStartup () Dim $nport = 9732 Dim $ConnectedSocket = -1 Dim $szIPADDRESS = @IPAddress1 Dim $GOOEY = GUICreate("My Server (IP: " & $szIPADDRESS & ")",300,200) Dim $edit = GUICtrlCreateEdit("",10,10,280,180) GUICtrlSetData ($edit, "Initial Startup at " & _Now ()) GUISetState() $MainSocket = TCPListen($szIPADDRESS, $nPORT) While 1 $nmsg = GUIGetMsg () $ConnectedSocket = TCPAccept($MainSocket) Select Case $nmsg = $GUI_EVENT_CLOSE Exit Case $ConnectedSocket <> -1 $szIP_Accepted = SocketToIP($ConnectedSocket) $recv = TCPRecv( $ConnectedSocket, 2048 ) If Not @error Then If $recv <> "" Then $text = "[" & $szIP_Accepted & "] " & $recv GUICtrlSetData ($edit, GUICtrlRead ($edit) & @CRLF & $text) Sleep (10) $sock = TCPConnect ($szIP_Accepted, 9732) If $sock = -1 Then GUICtrlSetData ($edit, GUICtrlRead ($edit) & @CRLF & ">> ERROR! UNABLE TO CONNECT TO HOST!") TCPSend ($sock, "RECVOK") If @error Then GUICtrlSetData ($edit, GUICtrlRead ($edit) & @CRLF & ">> ERROR! UNABLE TO SEND RESPONSE TO HOST " & $szIP_Accepted & "!") Else GUICtrlSetData ($edit, GUICtrlRead ($edit) & @CRLF & ">> Sent 'RECVOK' to host " & $szIP_Accepted) EndIf EndIf EndIf EndSelect 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*",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 Func OnAutoItExit () TCPCloseSocket($ConnectedSocket) TCPShutDown() EndFunc Client: expandcollapse popup#include <GUIConstants.au3> #include <Array.au3> $objErr = ObjEvent("AutoIt.Error", "MyErrFunc") TCPStartup() Global $username, $firstname, $firsttime, $privileges, $time, $birthday, $id Global $global_serverip = "192.168.0.104" Global $global_serverport = 9732 Global $global_computerno = 1 Global $global_connection_timeout = 10000 _Login("username", "password", $global_computerno) Func _Login($user, $pass, $pc_number) $socket = TCPConnect($global_serverip, $global_serverport) If $socket = -1 Then _Exit(1, "0x000001") TCPSend($socket, "/Client " & $user & "/computer" & $global_computerno) If @error Then _Exit(1, "0x000002") TCPCloseSocket($socket) $MainSocket = TCPListen(@IPAddress1, $global_serverport, 128) If $MainSocket = -1 Then MsgBox(0, "", @error) MsgBox(0, "", @extended) Exit EndIf $ConnectedSocket = TCPAccept($MainSocket) If $ConnectedSocket <> -1 Then $timer = TimerInit() While 1 $recv = TCPRecv($ConnectedSocket, 9000) ConsoleWrite(@CR & "> " & $recv) If Not @error Then If $recv <> "" Then Select Case $recv = "RECVOK" MsgBox(0, "", "RECVOK") ExitLoop Case $recv = "RECVBAD" _Exit(1, "0x000003") EndSelect Else ToolTip("nothing yet") EndIf EndIf If TimerDiff($timer) >= $global_connection_timeout Then _Exit(2, "0x000004") EndIf WEnd EndIf EndFunc ;==>_Login Func MyErrFunc() $hexnum = Hex($objErr.number, 8) MsgBox(0, "", "We intercepted an Error!!" & @CRLF & @CRLF & _ "err.description is: " & $objErr.description & @CRLF & _ "err.windescription is: " & $objErr.windescription & @CRLF & _ "err.lastdllerror is: " & $objErr.lastdllerror & @CRLF & _ "err.scriptline is: " & $objErr.scriptline & @CRLF & _ "err.number is: " & $hexnum & @CRLF & _ "err.source is: " & $objErr.source & @CRLF & _ "err.helpfile is: " & $objErr.helpfile & @CRLF & _ "err.helpcontext is: " & $objErr.helpcontext & @CRLF & @CRLF & _ "Please do not close this dialouge, and contact an administrator.") EndFunc ;==>MyErrFunc Func _Exit($type, $code) Local $e_text, $e_title If $type = 1 Then $e_title = "Fatal Error! " $e_text = "The system has encountered a fatal error" & @CRLF & @CRLF & _ "Please contact an administrator and quote error code " & $code & @CRLF & _ "Your patience is appriciated. Thank you." ElseIf $type = 2 Then $e_title = "Connection Timeout!" $e_text = "The timeout to server was reached. Please try again, or contact an administrator. " & @CRLF & @CRLF & _ "Your patience is appreiceated. Thank you." EndIf MsgBox(0, $e_title, $e_text) Exit EndFunc ;==>_Exit Where am I going wrong? Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version! Link to comment Share on other sites More sharing options...
monoceres Posted April 5, 2008 Share Posted April 5, 2008 I tested your code and it ran perfectly on my computer, had it running over 10 minutes without any problems. Maybe the problem lies in your firewal or NAT? Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
BrettF Posted April 5, 2008 Author Share Posted April 5, 2008 I tested your code and it ran perfectly on my computer, had it running over 10 minutes without any problems.Maybe the problem lies in your firewal or NAT?Hmmmmmmm... I hope so. Thanks! Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version! 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