LAP TRINH
Hiển thị các bài đăng có nhãn LAP TRINH. Hiển thị tất cả bài đăng

[VB.NET] LẬP TRÌNH TCP SERVER/CLIENT CƠ BẢN KẾT HỢP THREAD, STREAM

Chào các bạn tôi tiếp tục tìm hiểu vể Server/Client kết hợp với Thread, Stream để có Ser/Cli tương tác được với nhau. 

Demo: https://drive.google.com/open?id=0BwjnaR7wjSpMZDQ2VU5jb3QzRjQ

Import vào đầu

Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.IO

Module Module1
    'Tạo và khai báo biến IP cho SERVER.
    'Dùng IPAddress.Any để dùng các IP trên máy vd: 127.0.0.1 (local), 192.168.xxx.xxx (ip do router cấp).
    Dim ipServer As IPAddress = IPAddress.Any

    'Tạo và khái báo biến cho SERVER để lắng nghe các yêu cầu kết nối từ CLIENT.
    'Cú pháp TcpListener('ip của server đã khai báo ở trên', 'cổng kết nối (PORT) cổng này các bạn tự đặt miễn không đụng với các cổng sẵn có')
    Dim serlistener As TcpListener = New TcpListener(ipServer, 54321)
    'Dùng Try Catch để nếu có lỗi mình có thể kiểm tra báo lỗi gì.
    Dim ThreadTraLoi As Thread
    Sub TraLoi(clisocket As Socket)

        Try

            Console.WriteLine("SERVER DA CHAP NHAN KET NOI VOI CLIENT: " & clisocket.RemoteEndPoint.ToString)
            'Tạo biến stream để gửi nhận giữ liệu giữa server/client
            Dim streamcliser As New NetworkStream(clisocket)
            'Tạo biến serlis để lắng nghe hay học những thông tin từ client gửi tới
            Dim serlis As New StreamReader(streamcliser)
            'Tạo biến serans để trả lời hay gửi dữ liệu cho client
            Dim serans As New StreamWriter(streamcliser)
            serans.AutoFlush = True
            serans.WriteLine("CHUC MUNG BAN DA KET NOI THANH CONG DEN SERVER: " & serlistener.LocalEndpoint.ToString)
            serans.WriteLine("HAY NHAP LAN LUOT CAC SO 1 - 6 DE TEST:")
            serans.WriteLine("NHAP 'STOP' DE KET THUC:")
            While True
                'Biến này kiểu chuỗi chứa các thông tin đọc được trên 1 dòng dười gữi từ client
                Dim clistring As String = serlis.ReadLine
                If clistring = "STOP" Then
                    Exit While
                Else
                    Select Case clistring
                        Case "1"
                            serans.WriteLine("SO MOT")
                        Case "2"
                            serans.WriteLine("SO HAI")
                        Case "3"
                            serans.WriteLine("SO BA")
                        Case "4"
                            serans.WriteLine("SO BON")
                        Case "5"
                            serans.WriteLine("SO NAM")
                        Case "6"
                            serans.WriteLine("SO SAU")
                        Case Else
                            serans.WriteLine("KHONG BIET MOI HOC DEM TU 1 - 6 A")
                    End Select

                End If
            End While
            serans.WriteLine("NGAT KET NOI")
            streamcliser.Close()
        Catch ex As Exception

        End Try


    End Sub
Thay vì phải viết code dành cho Client, để test nhanh ta sử dụng telnet để kiểm tra.

Trước tiên phải mở telnet: Control Panel -->Programs and Features
  

 Check "Telnet Client" Click OK đợi xíu.

 

TEST 

SERVER: 

 

MỞ CMD LÊN GÕ: 

 

 


[VB.NET] LẬP TRÌNH TCP SERVER/CLIENT CƠ BẢN

Chào các bạn tôi vừa tìm hiểu được lập trình dùng VB.Net để tạo Server/Client dùng giao thức TCP.
Vì cũng vừa biết nên không tránh khỏi sai sót rất mong các bạn góp ý.



Import vào đầu của SERVER/CLIENT
Imports System.Net
Imports System.Net.Sockets

SERVER:
       Sub Main()
        'Tạo và khai báo biến IP cho SERVER.
        'Dùng IPAddress.Any để dùng các IP trên máy vd: 127.0.0.1 (local), 192.168.xxx.xxx (ip do router cấp).
        Dim ipServer As IPAddress = IPAddress.Any

        'Tạo và khái báo biến cho SERVER để lắng nghe các yêu cầu kết nối từ CLIENT.
        'Cú pháp TcpListener('ip của server đã khai báo ở trên', 'cổng kết nối (PORT) cổng này các bạn tự đặt miễn không đụng với các cổng sẵn có')
        Dim serlistener As TcpListener = New TcpListener(ipServer, 54321)
        'Dùng Try Catch để nếu có lỗi mình có thể kiểm tra báo lỗi gì.
        Try



            'SERVER bắt đầu lắng nghe yêu cầu từ CLIENT
            serlistener.Start()
            Console.WriteLine("SERVER BAT DAU LANG NGHE....")

            'Tạo và khai báo biến socket của client
            'Ý nghĩa: biến socket này là của CLIENT khi yêu kết nối đến SERVER được SERVER chấp nhận.
            While True
                Dim clisocket = serlistener.AcceptSocket
                Console.WriteLine("SERVER DA CHAP NHAN KET NOI VOI CLIENT: " & clisocket.RemoteEndPoint.ToString)
            End While


            Console.ReadLine()

        Catch ex As Exception
            Console.WriteLine("DA XAY RA LOI: " & ex.ToString)
        Finally
            serlistener.Stop()
        End Try
    End Sub
      
CLIENT:
       Sub Main()

        'Tạo biến IpSer biến này là địa chỉ của SERVER muốn kết nối đến ở đây là local 127.0.0.1, và port của SERVER là 54321 (khai báo bên SERVER)
        Dim IpSer As IPEndPoint = New IPEndPoint(IPAddress.Parse("127.0.0.1"), 54321)
        'Tạo biến TcpClient
        Dim tcpCli As New TcpClient
        Try
            Console.WriteLine("CLIENT BAT DAU YEU CAU KET NOI....")
            'Thực hiện kết nối đến SERVER
            tcpCli.Connect(IpSer)
            'Xuất ra màn hình thông báo đã kết nối được.
            Console.WriteLine("CLIENT DA DUOC KET NOI DEN SERVER")

        Catch ex As Exception
            Console.WriteLine(ex.ToString)
        Finally
            tcpCli.Close()
        End Try
        Console.ReadLine()
    End Sub
      
Đây là code kết nối Server/Client dùng giao thức TCP đơn giản.
Ở bài chia sẻ sau, tôi sẽ dùng Thread trong SERVER/CLIENT để có giao tiếp với nhau như gửi nhận FILE, CHAT,...