Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Lấy các Ports Do Windown Cấp?

  1. #1
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    Mặc định Lấy các Ports Do Windown Cấp?

    có cách nào để mình lấy được port mà do windown cấp ko ?? Để tranh tình trang xung đột Port đã đăng kí of những phần mềm khác mình cài trên máy.

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    Hà Nội | http://ipmac.vn
    Bài viết
    198

    Bạn có thể sử dụng đoạn mã sau để lấy port free.
    Vấn đề là nếu bạn lấy port này để listen thì không đảm bảo là mỗi lần server đếu lắng nghe trên một port -> cần suy nghĩ thêm cơ chế báo cho client của bạn biết rằng, với session này thì connect đến port nọ.
    Nếu bạn quan tâm thì có thể đọc thêm về giao thức SIP (Session Initiation Protocol) và giao thức Session Description Protocol (SDP) -> hay dùng trong VOIP khi cần chọn 1 port random để truyền tải dữ liệu voice.

    Visual C# Code:
    1. /// <summary>
    2. /// Provides static methods for operations
    3. /// commonly required when working with TCP ports
    4. /// </summary>
    5. {
    6.     private const string PortReleaseGuid =
    7.         "8875BD8E-4D5B-11DE-B2F4-691756D89593";
    8.  
    9.     /// <summary>
    10.     /// Check if startPort is available, incrementing and
    11.     /// checking again if it's in use until a free port is found
    12.     /// </summary>
    13.     /// <param name="startPort">The first port to check</param>
    14.     /// <returns>The first available port</returns>
    15.     public static int FindNextAvailablePort(int startPort)
    16.     {
    17.         int port = startPort;
    18.         bool isAvailable = true;
    19.  
    20.         var mutex = new Mutex(false,
    21.             string.Concat("Global/", PortReleaseGuid));
    22.         mutex.WaitOne();
    23.         try
    24.         {
    25.             IPGlobalProperties ipGlobalProperties =
    26.                 IPGlobalProperties.GetIPGlobalProperties();
    27.             IPEndPoint[] endPoints =
    28.                 ipGlobalProperties.GetActiveTcpListeners();
    29.  
    30.             do
    31.             {
    32.                 if (!isAvailable)
    33.                 {
    34.                     port++;
    35.                     isAvailable = true;
    36.                 }
    37.  
    38.                 foreach (IPEndPoint endPoint in endPoints)
    39.                 {
    40.                     if (endPoint.Port != port) continue;
    41.                     isAvailable = false;
    42.                     break;
    43.                 }
    44.  
    45.             } while (!isAvailable && port < IPEndPoint.MaxPort);
    46.  
    47.             if (!isAvailable)
    48.                 throw new NoAvailablePortsInRangeException();
    49.  
    50.             return port;
    51.         }
    52.         finally
    53.         {
    54.             mutex.ReleaseMutex();
    55.         }
    56.     }
    57. }
    Bao chàng trai không tiếc tuổi xuân đang viết nhiều chương trình
    Em đẹp xinh cũng quyết lập công chưa muốn lấy chồng
    http://ipmac.vn/ <- Học lập trình ... sư
    http://laptrinh.tv/ <- Kênh chia sẻ video học IT
    http://www.youtube.com/user/anhnt3 <- Video thực hành lập trình... sư từ A-Z

  3. #3
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    bạn có thể giải thik sơ thược 1 tí cho mình hiểu đc hem. thanks

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    7

    Tớ đưa các cổng port vào một combo nhé
    Code:
    //Serial Port
                string[] Ports = SerialPort.GetPortNames();
                foreach (string port in Ports) cbb_port.Items.Add(port);
    trong sự kiện mở cổng, bạn bắt lỗi
    Code:
    private void btn_open_Click(object sender, EventArgs e)
            {
                if (cbb_port.Text == "") return;
                try
                {
                    if (UART.IsOpen == false)
                    {
                        UART.PortName = cbb_port.Text;
                        UART.Open();
                        lb_portstatus.Text = "Open";
                        btn_open.Enabled = false;
                        btn_close.Enabled = true;
                        cbb_port.Enabled = false;
                    }
                }
                catch (System.Exception)
                {
                    MessageBox.Show("Please select another port.");
                    return;
    
                }
            }

  5. #5
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    ý mình là nó hoạt động như thế nào ? nó check cái port of mình như thế nào đó bạn . Tại vì có 1 số phuơng thức đọc tớ ko hiểu cho lắm .Thanks

Các đề tài tương tự

  1. nhạc nền trong một ứng dụng windown
    Gửi bởi maivietkhoa trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 21-06-2011, 02:44 AM
  2. cần bộ icon cho việc tạo ứng dụng windown form
    Gửi bởi maivietkhoa trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 1
    Bài viết cuối: 15-06-2011, 09:24 PM
  3. Bài tập windown trên C# sự kiện bắt phím và timer?
    Gửi bởi huynhnhan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 22-03-2011, 12:35 PM
  4. Lập trình C/C++ for windown thì nên xài trình b/dịch nào?
    Gửi bởi minhtuan99bk trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 02-04-2009, 12:43 PM
  5. Tạo ổ ảo trong Windown XP mà không cần phần mềm
    Gửi bởi iamvtn trong diễn đàn Thắc mắc chung
    Trả lời: 0
    Bài viết cuối: 15-11-2007, 09:53 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn