Jump to content
Sign in to follow this  

TCPConnect welcome message option?

Recommended Posts


I have written a port listening tool that will allow a machine to "listen" on one or more ports.


Is there anyway to have a welcome message if I use telnet to connect to the machine. At the moment it connects fine, but I would like telnet to to say "You have successfully connected to machine xxx".




Share this post

Link to post
Share on other sites

Use a MsgBox() to do this, if it's successful then MsgBox or if there is an error then MsgBox with the error!


But this would only work if I create an Autoit connect program. Sometimes I dont have an option to get files onto the remote machine I am testing connection from. If I use the default windows telnet program that is commonly available on the machine, this would not be able to use msgbox() option. Or am I missing something? Can you elaborate or give us a quick demo script?



Share this post

Link to post
Share on other sites

Cant you just use TCPSend($ConnectedSocket, "HELO" & @CR) when something connects to the port?

Thanks to all for all your help, but once again, this would only work if I use create an autoit code to connect to the portlisten program. Using the command telnet <computername to connect to> <port number listening> comes back with a blank black box. I will continue to investigate. I dont want to have a messagebox on the portlisten side, but on the telnet side.



Share this post

Link to post
Share on other sites

I Think you have to review your code.

This slightly modified (Search for ;NOTE) helpfile sample for TCPRecv works as expected with telnet.

Obviously you will have to add more code to make a proper server..:)

#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

;SERVER!! Start Me First !!!!!!!!!!!!!!!


Func Example()
    ; Set Some reusable info
    ; Set your Public IP address (@IPAddress1) here.
;   Local $szServerPC = @ComputerName
;   Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

    ; Start The TCP Services

    ; Create a Listening "SOCKET".
    ;   Using your IP Address and Port 33891.
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

    ; If the Socket creation fails, exit.
    If $MainSocket = -1 Then Exit

    ; Create a GUI for messages
    $GOOEY = GUICreate("My Server (IP: " & $szIPADDRESS & ")", 300, 200)
    $edit = GUICtrlCreateEdit("", 10, 10, 280, 180)

    ; Initialize a variable to represent a connection
    $ConnectedSocket = -1

    ;Wait for and Accept a connection
        $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

    ; Get IP of client connecting
    $szIP_Accepted = SocketToIP($ConnectedSocket)
;NOTE: Added TCPSend to pass on a msg to the aoolication connected
    TCPSend($ConnectedSocket, "Welcom stranger" & @CRLF & "You are now connected")
    ; GUI Message Loop
    While 1
        $msg = GUIGetMsg()

        ; GUI Closed
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop

        ; Try to receive (up to) 2048 bytes
        $recv = TCPRecv($ConnectedSocket, 2048)

        ; If the receive failed with @error then the socket has disconnected
        If @error Then ExitLoop

        ; Update the edit control with what we have received
        If $recv <> "" Then GUICtrlSetData($edit, _
                $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))

    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)

EndFunc   ;==>Example

; Function to return IP Address from a connected socket.
Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet
    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
            "ptr", DllStructGetPtr($sockaddr), "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]
        $aRet = 0

    $sockaddr = 0

    Return $aRet
EndFunc   ;==>SocketToIP

Share this post

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...