ฟอรั่ม PSsix

Would you like to react to this message? Create an account in a few clicks or log in to continue.

ฟอรั่มของบล็อก http://pssix.blogspot.com


3 posters

    TCP Sever-Client

    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 26/10/11, 07:58 pm

    ว่าจะลองทำโปรแกรม รับส่งข้อมูลผ่าน TCP
    Client
    TCPStart() ;เริ่มการใช้งานTCP
    TCPConnect() ; เชื่อมต่อไปยังSever
    TCPSend() ;ใช้ ส่ง data and binare(ข้อมูล)
    TCPRecv ;ใช้รับข้อมูล
    TCPAccept ; ใช้ยอมรับการเชื่อมต่อ
    TCPLicten ; ใช้รอการเชื่อมต่อจาก client
    TCPShutdown(); ยกเลิกการใช้งานTCP
    แปลจาก help ไม่รู้ว่าเข้าใจถูกไม่ครับ
    ใครเก่งแนวนี้ขอคำแนะนำด้วยครับ

    aut
    aut
    PSsix Powerful Scripting Class
    PSsix Powerful Scripting Class


    PSsix Game Coder
    จำนวนข้อความ : 472
    ความนิยม : 126
    เข้าร่วมเมื่อ : 24/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by aut 27/10/11, 05:59 pm

    นายไปหาดูในบอดautoitดิเยอะแยะ
    [You must be registered and logged in to see this link.]

    Client
    Global $MainSocket
    Local $MaxLength = 512; Maximum Length Of Text
    Local $Port = 1000; Port Number
    Local $Server = @IPAddress1; Server IpAddress
    TCPStartup()
    $MainSocket = TCPConnect($Server, $Port)
    If $MainSocket = -1 Then Exit MsgBox(16, "Error", "Unable to connect.")
    While 1
    $Data = TCPRecv($MainSocket, $MaxLength)
    If $Data = "~bye" Then
    MsgBox(16, "Session Ended", "Connection Terminated.")
    Exit
    ElseIf $Data <> "" Then
    ; Unconditional Receive
    MsgBox(0, "Received Packet", $Data)
    EndIf
    WEnd
    Func OnAutoItExit()
    If $MainSocket <> - 1 Then
    TCPSend($MainSocket, "~bye")
    TCPCloseSocket($MainSocket)
    EndIf
    TCPShutdown()
    EndFunc;==>OnAutoItExit



    Server
    Global $MainSocket = -1
    Global $ConnectedSocket = -1
    Local $MaxConnection = 1; Maximum Amount Of Concurrent Connections
    Local $MaxLength = 512; Maximum Length Of String
    Local $Port = 1000; Port Number
    Local $Server = @IPAddress1; Server IpAddress
    TCPStartup()
    $MainSocket = TCPListen($Server, $Port)
    If $MainSocket = -1 Then Exit MsgBox(16, "Error", "Unable to intialize socket.")
    While 1
    $Data = TCPRecv($ConnectedSocket, $MaxLength)
    If $Data = "~bye" Then
    MsgBox(16, "Session Ended", "Connection Terminated.")
    Exit
    ElseIf $Data <> "" Then
    ; Unconditional Receive
    MsgBox(0, "Received Packet", $Data)
    EndIf
    If $ConnectedSocket = -1 Then
    $ConnectedSocket = TCPAccept($MainSocket)
    If $ConnectedSocket <> -1 Then
    ; Someone Connected
    TCPSend($ConnectedSocket, "Connected!")
    EndIf
    EndIf
    WEnd
    Func OnAutoItExit()
    If $ConnectedSocket <> - 1 Then
    TCPSend($ConnectedSocket, "~bye")
    TCPCloseSocket($ConnectedSocket)
    EndIf
    If $MainSocket <> -1 Then TCPCloseSocket($MainSocket)
    TCPShutdown()
    EndFunc;==>OnAutoItExit
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 28/10/11, 01:31 am

    ขอบคุณครับยังไม่เข้าใจในบางจุด
    ตรง $Data = TCPRecv($ConnectedSocket, $MaxLength)
    $MaxLength = 512; Maximum Length Of String
    $MaxLength = 512 คือค่าสูงสุดที่ใส่ จำนวนคำได้ไม่เกิน 512 คำใช้หรือเปล่าครับ

    เรื่อง port ที่เลือกใช้ต้องเป็น port ที่เปิดไว้รอแล้ว ใช้หรือเปล่าครับผมใส่ port ไหนก็ error ตลอด
    สุดท้ายจบที่ port 80
    ถ้าเราจะเลือกใช้ port เช่น port 5000 เราต้องเปิด port ก่อนใช่ไหมครับ
    เราใช้คำสั่งไหนเปิด port ครับ
    ขอบคุณครับ

    POS
    POS
    PSsix
    PSsix


    TCP Sever-Client Empty TCP Sever-Client Empty TCP Sever-Client Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by POS 28/10/11, 07:27 am

    TCP ใช้สำหรับสื่อสารต้องมีเครื่องสองเครื่องติดต่อกัน จะใช้คำสั่งพวกนี้ ต้องมีพื้นฐาน TCP/IP ว่าทำงานอย่างไร หาหนังสือพวกระบบเน็ตเวิร์คมาอ่านให้เข้าใจก่อน ถ้าอยากจะศึกษาแบบจริงจัง

    แต่ถ้าแค่อยากทำเล่นๆ ก็ไม่ต้องเสียเวลาศึกษา เพราะพื้นฐานไม่แน่นก็จบ ทำอะไรไม่ได้ในระดับที่สูงขึ้นไป ทำไปก็ติดๆ ขัดๆ เสียเวลาเปล่า เนื่องจากต้องมีการพลิกแพลงและนั่งอ่านแพคเก็ตรับส่งจำนวนมาก ไม่ใช่เรื่องง่ายที่ต้องทำความเข้าใจด้วยตนเอง ถ้าทำเพราะแค่อยากรู้แล้วต้องทรมานตนเองเพื่อพยายามทำความเข้าใจเรื่องบางเรื่องที่ไม่ได้ใช้งานเลย คุ้มกันหรือเปล่า ผมตอบไม่ได้ นั่นก็แล้วแต่คุณ
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 30/10/11, 01:11 am

    ยังไม่รีบครับค่อยๆ ศึกษาไปเรื่อย ๆครับ
    เรื่องระบบ แลนการรับส่งข้อมูลก็ศึกษามาซักพักแล้วครับ
    ขอบคูณครับ
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 04/11/11, 01:22 am

    ทำมาได้ระดับหนึ่งแล้วครับ
    ผมให้ client ส่งข้อความไปหา sever
    พอ sever รับข้อความว่าตรงกับเงื่อนไขก็ทำตามคำสั่ง
    ติดปัญหาเกี่ยวกับการแยกคำ เช่น
    หาก
    client ส่งข้อความว่า xstop123456789
    อยากให้ทางsever รับข้อความแล้ว
    ตัดคำว่า xstopทิ้งไป เอาแต่ 123456789 มาประมวลผล
    ใช้คำสั่งไหนครับตัดคำที่ไม่ต้องการทิ้ง
    ขอบคุณครับ
    POS
    POS
    PSsix
    PSsix


    TCP Sever-Client Empty TCP Sever-Client Empty TCP Sever-Client Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by POS 04/11/11, 07:12 am

    Code:
    $text= "xstop123456789"
    $text = StringReplace($text,"xstop" ,"")
    MsgBox(0,"",$text)
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 05/11/11, 10:45 pm

    ขอบคุณครับ
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 09/11/11, 09:51 am

    TCPRecv = สามารถกำหนดจำนวนข้อมูลที่จะรับในแต่ล่ะครั้งได้สูงสูดเท่าไรครับ
    หาจะgoogle บอกว่าได้ครั้งล่ะไม่เกิน 64kb
    POS
    POS
    PSsix
    PSsix


    TCP Sever-Client Empty TCP Sever-Client Empty TCP Sever-Client Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by POS 09/11/11, 05:17 pm

    อะไรคือรับแต่ละครั้งที่คุณเข้าใจ หมายถึงส่งข้อมูลไฟล์ครั้งหนึ่งไม่เกิน 64 KB อย่างนั้นใช่หรือไม่

    การรับส่งข้อมูล จะรับข้อมูลรับได้ไม่จำกัดครับ คิดง่ายๆ รับได้ไม่เกิน 64 KB อย่างนั้นก็ไม่สามารถดาวน์โหลดไฟล์ขนาด 1 MB ได้

    อะไรคือไม่เกิน 64 KB ที่คุณไปอ่านมา เป็น 64 KB ขนาดของอะไรกันแน่ และตัวเลข 64 KB ก็ไม่ได้หมายความว่าส่งได้สูงสุด 64 KB การรับส่งมีข้อจำกัดอะไร

    ต้องศึกษาหาข้อมูล TCP และเรื่อง MTU เพิ่มเติม หาข้อมูลจากหลายๆ แหล่ง บางที่อาจบอกไม่ชัดเจน บางที่อาจเน้นเฉพาะเรื่อง เหล่านี้ทำให้ความเข้าใจคลาดเคลื่อนได้ง่าย อ่านให้หมด อ่านทุกอย่าง อันไหนไม่แน่ใจก็หาอ่านเพิ่มเติม อ่านไปจนเข้าใจ เรื่องพวกนี้เป็นเรื่องพื้นฐาน ถ้าหากสนใจการเขียนโปรแกรม TCP/IP คุณต้องลุยอ่านเอง ไม่มีทางลัดครับ


    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 10/11/11, 09:49 am

    งั้นค่าตัวเลขใน
    TCPRecv($ConnectedSocket, 512)
    ตรง 512 ใช้แทนค่าอะไรครับเขาคิดเป็นหน่วยของอะไรครับ bit, kb, mb,
    ที่งงเพราะผมลองส่งรูปขนาด 830kb ก็ผ่านไม่มีปัญหา
    ตัวแม่ทำเสร็จหมดแล้ว
    เหลือตัวลูกยังทำไม่เสร็จดีเท่าไร
    ขอบคุณครับ
    POS
    POS
    PSsix
    PSsix


    TCP Sever-Client Empty TCP Sever-Client Empty TCP Sever-Client Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by POS 10/11/11, 03:03 pm

    ผมว่าคุณศึกษาลงไปให้ลึกกว่านี้ หรือหาหนังสือระบบ network มาอ่านจนเข้าใจจะดีกว่าครับ

    จากนั้นค่อยดูว่า AutoIt ทำงานที่ชั้น layer ใดรูปแบบการทำงานจะเป็นแบบไหน หาอ่านอย่างละนิดละหน่อยในอินเตอร์เน็ต หากไม่สามารถจัดเรียงข้อมูลความรู้ให้ถูกต้อง ทุกอย่างจะสับสนปนเปกันหมด กลายเป็นไร้ประโยชน์ การตั้งค่าทุกอย่างในสคริปต์ก็มีเหตุผลของมันเอง ไม่ใช่ตั้งอย่างไรก็ได้ ถ้ารู้แล้วจะไม่มาถามว่า 512 เป็นหน่วยของอะไร ทำไมต้องตั้งค่าแบบนี้

    ก็เข้าใจนะครับว่าให้อ่านอะไรมากๆ เช่น หนังสือ Network ทั้งเล่มนี้ไม่ใช่เรื่องง่าย แต่ที่แนะนำให้ทำแบบนี้ ไม่ใช่จะให้อ่านแล้วเข้าใจเลย วิธีการอ่านก็คืออ่านไปทั้งหมดรวดเดียว ไม่เข้าใจไม่เป็นไร อ่านให้ติดตาไปก่อน จากนั้นค่อยมาไล่เก็บประเด็น อาจต้องอ่านหลายๆ รอบกว่าจะรู้เข้าใจ แต่ก็คุ้มค่าที่ได้มา คุณจะเล่นสคริปต์ในระดับนี้ ถ้าไม่รู้ด้วยตนเอง ทำไปก็จะติดปัญหาและขอให้คนอื่นช่วยแก้ได้ ก็จะวนกลับมาติดอีก สุดท้ายมันจะเหลือคำถามเดียว คำถามเดียวเท่านั้นที่เหลืออยู่วนเวียนในหัว "จะทำไปทำไม"

    ไม่พยายามทำด้วยตนเอง ความหมายก็คือ ไม่พยายามทำด้วยตนเอง

    คำพูดขอหยุดไว้เท่านี้ คุณจะอ่านแล้วรู้ถึงสิ่งที่ผมบอกไปหรือไม่ ล้วนไม่สำคัญ เพราะถือว่าผมได้พูดไปแล้ว

    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 04/12/11, 05:47 am

    ยังพยายามอยู่ครับ
    ไปได้ ไฟล์ pdf เปิดโลก tcp/ip
    กับos 7 layer
    กับ เขียนโปรแกรมติดต่อระบบแลน
    จะทำต่อไปครับ
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 17/12/11, 09:38 am

    ตัว sever มันยังไม่คอยเสถียรครับช่วยดูให้หน่อยต้องแก้ไขตรงไหน
    Code:
    #NoTrayIcon
    #include <Misc.au3>
    #include <ScreenCapture.au3>
    _Singleton(@ScriptName,0)
    Opt('MustDeclareVars', 1)
    Global $ConnectedSocket1 = -1
    Global $MainSocket

    Example()

    Func Example()
        OnAutoItExitRegister("Cleanup")
        Local $recv
        Local $stop
        Local $start
        Local $g_IP = @IPAddress1
        Local $g_PORT = FileRead("C:\temp\port.txt")

        TCPStartup()
        $MainSocket = TCPListen($g_IP,$g_PORT, 100)
        If $MainSocket = -1 Then Exit
     
    While 1
        If $ConnectedSocket1 = -1 Then  $ConnectedSocket1 = TCPAccept($MainSocket)
         
            $recv = TCPRecv($ConnectedSocket1, 2048)
          If $recv <> "" Then                         
             If StringInStr($recv,"01") Then

                 _Main()   
                         Else
                 MsgBox(0,"Windows",$recv)
                               
              EndIf
             $ConnectedSocket1 = -1
                    EndIf       
    WEnd
    EndFunc

    Func _Main()
     Local $hBmp,$xxy,$file
     $hBmp = _ScreenCapture_Capture ("") 
     _ScreenCapture_SaveImage (@MyDocumentsDir&"\Image.JPG", $hBmp)
    $file = FileOpen(@MyDocumentsDir&"\Image.jpg",16)
    $xxy = FileRead($file)
    TCPSend($ConnectedSocket1,$xxy)
    FileClose($file)
    If FileExists(@MyDocumentsDir&"\Image.jpg") = 1 Then
    fileDelete(@MyDocumentsDir&"\Image.jpg")
    EndIf
    EndFunc 

    Func Cleanup() 
        If $MainSocket <> -1 Then TCPCloseSocket($MainSocket)
        If $ConnectedSocket1 <> -1 Then TCPCloseSocket( $ConnectedSocket1)
        TCPShutdown()
    EndFunc

    ตัว Client
    Code:
    $Password = Inputbox("Password","Password To Programe")
    If @error Then Exit
    If $Password <> "1983" Then Exit

    #include <GUIConstants.au3>
    Global $read03, $MainSocket, $s_IP, $s_PORT,$ConnectSocket

    Example()

    Func Example()
    OnAutoItExitRegister("Cleanup")

    $Form1 = GUICreate("client", 371, 173, 197, 125)
    $Label1 = GUICtrlCreateLabel("IP ", 16, 16, 20, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 40, 8, 121, 21)
    $Label2 = GUICtrlCreateLabel("PORT", 168, 16, 38, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 208, 8, 65, 21)
    $Button1 = GUICtrlCreateButton("Connect", 288, 8, 75, 25)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Messsge", 8, 152, 50, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("", 64, 144, 209, 21)
    $Button2 = GUICtrlCreateButton("Send", 288, 144, 75, 25)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Edit1 = GUICtrlCreateEdit("", 8, 40, 353, 97)
    GUICtrlSetData(-1, "")
    GUISetState(@SW_SHOW)
    TCPStartUp()
    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case $GUI_EVENT_CLOSE
             Exit
          Case $Button1
             $s_IP = GUICtrlRead($Input1)
             $s_PORT = GUICtrlRead($Input2)
             If $s_IP <> "" And $s_PORT  <> "" Then
                $MainSocket = TCPConnect($s_IP,$s_PORT)
                If $MainSocket = -1 Then
                   GUICtrlSetData($Edit1,"No Connect To Sever")
                Else
                   GUICtrlSetData($Edit1,"Client Connect To Sever")
                EndIf
             Else
                GUICtrlSetData($Edit1,"Error IP and Port")               
             EndIf

          Case $Button2
             $read03 = GUICtrlRead($Input3)
             If $read03 <> "" Then   
                If $MainSocket <> -1 Then
                   TCPSend($MainSocket,$read03)
                   GUICtrlSetData($Edit1,"Send To Sever : "&$read03)
                   GUICtrlSetData($Input3,"")
                Else
                   MsgBox(0,"error","Error IP And PORT")
                EndIf
             Else
                MsgBox(0,"error","Error Messsge Send To Sever")
             EndIf
       EndSwitch

       $ConnectSocket = TCPRecv($MainSocket,2048)
       If $ConnectSocket <> "" Then       
          Filewrite(@MyDocumentsDir&"\test11.JPG",$ConnectSocket)                          
       EndIf
    WEnd 
    EndFunc

    Func Cleanup() 
        If $MainSocket <> -1 Then TCPCloseSocket($MainSocket)
        If $ConnectSocket <> -1 Then TCPCloseSocket($ConnectSocket)
        TCPShutdown()
    EndFunc



    ตอนแรกว่าจะทำโปรแกรมรับส่งไฟล์
    ทำไปทำมากลายเป็น....?
    Monaliza
    Monaliza
    PSsix Member Super Class III
    PSsix Member Super Class III


    PSsix Program Coder
    จำนวนข้อความ : 213
    ความนิยม : 7
    เข้าร่วมเมื่อ : 03/10/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by Monaliza 28/12/11, 05:40 pm

    มีใตรพอมีความรู้เรื่อง ip ที่ใช้เชื่อมต่อ net บ้างครับ
    ผมทำโปรแกรมรับส่งไฟล์ ทดสอบในระบบแลน ทำงานได้ดีมากเลยครับ
    แต่ทดสอบผ่าน net มันมีตัวแปรหลาย ๆ อย่าง เราท์เตอร์ ไฟล์วอร์ ?
    ไอพีในระบบแลนจะเป็น 192.168.xxxxxx
    แต่ใน ไอพีที่ใช้ต่อ net จะเป็น277.xxxxxx.xxx.xx
    เครื่องในแลน 300 เครื่องใช่ไอพี ที่ใช่ต่อเน็ต ไอพีเดียวกันหมดเลย
    ตัวclient เลยไม่รู้จะ เชื่อมต่อเข้ามายังไง
    ขอบคุณครับ
    aut
    aut
    PSsix Powerful Scripting Class
    PSsix Powerful Scripting Class


    PSsix Game Coder
    จำนวนข้อความ : 472
    ความนิยม : 126
    เข้าร่วมเมื่อ : 24/07/2010

    TCP Sever-Client Empty Re: TCP Sever-Client

    ตั้งหัวข้อ by aut 28/12/11, 05:51 pm

    เอาปายลองแกะดู ชินจัง

    [You must be registered and logged in to see this link.]

      เวลาขณะนี้ 27/04/24, 09:24 pm