2011-02-09 70 views
5

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 ý!

+0

Phiên bản Mac OS nào? – Daniel

+0

Mac OS 10.6.6, Phiên bản Java 1.6.0_22 –

Trả lời

0

Tôi thực sự khuyên bạn nên nói chuyện với nhà cung cấp ngăn xếp tcp/ip MCU của bạn.

Mặc dù bạn có thể chỉnh sửa một máy Mac cụ thể này, bạn sẽ phải sửa lỗi này vĩnh viễn hơn. Và có đủ mac ra khỏi đó mà bạn sẽ phải đối phó với nó sớm hay muộn.

+0

Tôi đã sửa đổi một số thủ tục để tự động xóa mục nhập kết nối không hoạt động. Vẫn thú vị, java hoạt động rất khác trong ví dụ này trên máy Mac so với trên các máy cửa sổ ... –

1

Vâng, nếu đây là sự cố trong ngăn xếp TCP do OS cung cấp (mà tôi tin là vậy), bạn có thể thử telnet từ máy Mac của mình với thiết bị và đóng kết nối. Chỉ cần để xem liệu ack dup này sẽ vẫn được phát ra. Nếu có, thay vì trao đổi phiên bản java/nhà cung cấp (ví dụ) sẽ không hoạt động tốt ...

... oh, và có thể bạn sẽ lọc gói vi phạm bằng tường lửa của mình? Đó là một dự đoán hoang dã, vì tôi thực sự không biết gì về tường lửa cho MacOS ...

Các vấn đề liên quan