Tình hình như sau: Tôi có một Ứng dụng Java, giao tiếp qua TCP tới một Vi điều khiển với TCP Stack trên đó. Stack trên Controller hoạt động tốt, tôi có thể sắp xếp nó.Ổ cắm Java: Socket.close() chấm dứt kết nối khác nhau trên Windows và Mac?
Sự cố là: Khi tôi chấm dứt kết nối với Bộ điều khiển, tôi chỉ cần sử dụng socket.close()
và kết nối bị chấm dứt, không có vấn đề gì. Trên máy Mac của tôi, điều này cũng hoạt động, nhưng khi tôi kiểm tra Wireshark, có quy trình chấm dứt thông thường [FIN,ACK]
- [ACK]
, nhưng theo sau là gói [TCP Dup ACK]
, do Wireshark yêu cầu, thuộc về gói [FIN,ACK]
của tôi. Điều này chỉ xảy ra trên máy Mac và không xảy ra trên máy Windows trên máy ảo trên mac của tôi hoặc trên netbook của tôi ...
Có bất kỳ tinh chỉnh nào tôi có thể sử dụng để không cho phép Gói Dup-ACK này được truyền không? Nó thực sự giật lên ngăn xếp trong Bộ điều khiển bằng cách tuyên bố rằng phiên đã đóng vẫn hoạt động và sau 10 lần kết nối với bộ điều khiển, ngăn xếp không còn chỗ để chấp nhận kết nối mới.
Tôi thực sự biết ơn nếu ai đó có thể cho tôi gợi ý!
Phiên bản Mac OS nào? – Daniel
Mac OS 10.6.6, Phiên bản Java 1.6.0_22 –