2012-04-23 22 views
5

Tôi đang làm việc với ứng dụng nhận tệp bằng giao thức TCP, ứng dụng xử lý tệp và gửi tệp đó theo cùng một giao thức, tôi nhận được tệp mà không gặp sự cố , vấn đề của tôi là khi tôi cố gắng để gửi các tập tin, vì tôi cần phải gửi hồ sơ cho một ứng dụng khác đang lắng nghe một cổng động, mã mà tôi đang sử dụng để gửi những tập tin này là:Gửi tệp đến Cổng động theo Giao thức TCP

internal void Send(byte[] buffer) 
    { 
     TcpClient _client = null; 
     try 
     { 
      _client = new TcpClient(RemoteIPaddress, Dynamic_port); 

      if (_client != null) 
      { 
       NetworkStream _clienttStream = _client.GetStream(); 
       _clienttStream.Write(buffer, 0, buffer.Length); 
       _clienttStream.Flush(); 
       _clienttStream.Close(); 
       _clienttStream = null; 
      } 
     } 
     catch 
     { 
      if (_client != null) 
      { 
       _client.Close(); 
       _client = null; 
      } 
     } 
    } 

câu hỏi đặt ra thế nào tôi có thể gửi tệp bằng giao thức TCP tới máy từ xa sử dụng cổng động

Trả lời

2

Thông thường, máy chủ nên nghe trên một cổng nổi tiếng cho một yêu cầu kết nối. Phản hồi phải bao gồm số cổng mà máy chủ sẽ giao tiếp thêm. Sau đó, ứng dụng của bạn kết nối với cổng đó để truyền dữ liệu.

Các giao tiếp nên làm như sau:

  1. Khách hàng kết nối với máy chủ trên cổng nổi tiếng.
  2. Máy chủ phản hồi với số cổng động để sử dụng để liên lạc thêm.
  3. Khách hàng kết nối với máy chủ trên số cổng đã nhận.
  4. Phản hồi của máy chủ cho biết thiết lập kết nối.
  5. Khách hàng truyền dữ liệu và ngắt kết nối.

Đây là phiên bản đơn giản về cách hoạt động của FTP thụ động.

Điểm là, chỉ có hai cách để kết nối với máy chủ trên cổng động. Cách đầu tiên được nêu ở trên. Nếu bạn không thể làm theo cách đó thì ứng dụng khách của bạn sẽ phải thực hiện quét cổng, gửi nỗ lực kết nối tới mọi cổng trong một phạm vi và xem máy chủ nào phản hồi. Tuy nhiên, tường lửa thường được lập trình để nhận thấy loại điều này và tắt bạn (đó là hành vi của hacker).

1

Bạn có hỏi cách bạn có thể xác định cổng động mà máy từ xa đã chọn để sử dụng không? Không có cách tự động để làm điều này. Máy chủ nên hoạt động trên một cổng mà cả hai máy đều biết hoặc bạn nên tìm cách để họ chọn một cổng thông qua một số phương thức giao tiếp khác. Hoặc bằng cách kết nối với máy chủ của bên thứ ba hoặc lưu trữ một dịch vụ web mà khách hàng có thể truy cập.

+0

tôi cần biết Cổng động đang nghe từ ứng dụng khách –