Kết nối mạng có thể bị ngắt do có ứng dụng khác đã chiếm dụng cổng mà chúng ta muốn sử dụng. Do đó phương thức Connect hoặc Listen không phải bao giờ cũng được thực hiện thành công. Do đó, sử dụng cấu trúc bắt lỗi try/catch trong lập trình mạng là cần thiết. Ví dụ: try { serverSocket.Bind(ipepServer); serverSocket.Listen(-1); } catch(SocketException e) { MessageBox.Show(e.Message); } catch(Exception e) {MessageBox.Show(e.Message); Application.Exit(); }
Application.Exit() End try
Vấn đề nữa hay gặp trong các ứng dụng mạng là khả năng mở rộng. Đây là khả năng đáp ứng của ứng dụng với số lượng kết nối lớn trong cùng một thời điểm. Để thử nghiệm, chúng ta có thể kích chuột nhiều lần vào nút Connect hoặc Send trên ứng dụng client để xem chương trình có thể bị đứng do hết bộ nhớ, ngắt giữa chừng, rớt kết nối hay vẫn hoạt động tốt. Để phát hiện ra lỗi của những ứng dụng mạng đa luồng, chúng ta sử dụng lớp System. Diagnostics.Trace, hoặc là câu lệnh Console.WriteLine ở phương thức vào hoặc thoát của chương trình.
Đối với các ứng dụng mạng có giao tiếp với một ứng dụng được phân phối bởi hãng thứ 3, việc kiểm tra lỗi giữa client và server trở nên khó khăn hơn, đặc biệt khi mà giao thức và cổng kết nối không được tiết lộ hoặc được mô tả đầy đủ. Trong trường hợp này, việc trước tiên chúng ta cần phải làm là kiểm tra xem những cổng nào đang hoạt động. Công cụ hữu ích để làm việc này là netstat. Để mở netstat, chúng ta gõ netstat vào trong dấu nhắc lệnh hoặc vào run. Xem hình sau
Netstat liệt kê tất cả các kết nối vào/ra trên máy tính tại thời điểm hiện tại cộng với số cổng tương ứng. Dùng phương pháp đối chiếu khi chạy và tắc chương trình để tìm ra cổng mà chương trình sử dụng. Việc xác định cổng của ứng dụng là bước đầu tiên để can thiệp vào trong giao thức, để phân tích từng bit và byte được gởi qua lại giữa hai ứng dụng chúng ta cần sử dụng các công cụ phân tích khác ví dụ Trace Plus ( www.sstinc.com).