Tôi đồng ý với Zan Lynx. Không có gì đảm bảo, nhưng bạn có thể duy trì kết nối gần như vô thời hạn bằng cách gửi dữ liệu qua nó, giả sử không có vấn đề về kết nối hoặc băng thông.
Nói chung tôi đã đi cho tiếp cận mức ứng dụng tiếp tục sống, mặc dù điều này thường là vì nó nằm trong thông số khách hàng nên tôi phải làm điều đó. Nhưng chỉ cần gửi một số dữ liệu ngắn mỗi phút hoặc hai, mà bạn mong đợi một số loại xác nhận.
Cho dù bạn đếm một lỗi không thừa nhận vì kết nối không thành công tùy thuộc vào bạn. Nói chung đây là những gì tôi đã làm trong quá khứ, mặc dù đã có một trường hợp tôi đã chờ đợi ba câu trả lời thất bại liên tiếp để thả kết nối vì ứng dụng ở đầu kia của kết nối cực kỳ lúng túng khi trả lời "bạn có ở đó không ? " yêu cầu.
Nếu kết nối không thành công, tại một số điểm có thể, ngay cả với các máy trên cùng một mạng, thì chỉ cần cố gắng thiết lập lại nó. Nếu điều đó không thành công, bạn có vấn đề. Nếu kết nối của bạn liên tục bị lỗi sau khi kết nối được một lúc thì bạn lại gặp sự cố. Rất có thể trong cả hai trường hợp, đó có thể là sự cố mạng, thay vì mã của bạn hoặc có thể là sự cố với ngăn xếp TCP/IP trên máy của bạn (đã được biết: Tôi gặp sự cố với phiên bản cũ của QNX - nó đã xảy ra chỉ ngẫu nhiên rơi xuống). Có nói rằng bạn có thể có một vấn đề phần mềm, và cách duy nhất để biết chắc chắn thường là để đính kèm một trình gỡ lỗi, hoặc để có được một số đăng nhập ở đó. Ví dụ. nếu bạn luôn có thể kết nối thành công, nhưng sau một thời gian bạn ngừng nhận ACK, ngay cả sau khi kết nối lại, thì có thể máy chủ của bạn bị bế tắc hoặc bị kẹt trong vòng lặp hoặc thứ gì đó. Điều gì thực sự hữu ích là để thiết lập một loạt các bài kiểm tra chạy dài trong một loạt các điều kiện tải, từ chỉ gửi giữ sống là bạn có?/Ack yêu cầu và phản ứng, để hoàn toàn đập máy chủ.Điều này nói chung sẽ giúp bạn tự tin hơn về các thành phần phần mềm của bạn, và có thể thực sự hữu ích trong việc làm nổi bật một số vấn đề thực sự kỳ lạ mà không nhất thiết gây ra vấn đề với kết nối của bạn, mặc dù chúng có thể dẫn đến các vấn đề xảy ra. Ví dụ, tôi đã từng viết một máy chủ ứng dụng viễn thông cung cấp các dịch vụ như dịch số, và chúng tôi chỉ để nó hoạt động trong nhiều ngày tại một thời điểm. Vấn đề là khi thứ bảy đến vòng, cả ngày, nó sẽ từ chối mọi yêu cầu cuộc gọi đến, mà lên đến hàng triệu cuộc gọi, và chúng tôi không biết tại sao. Hóa ra là do một lỗi chính tả trong một số mã chuyển đổi ngày chỉ gây ra sự cố vào thứ Bảy.
Hy vọng điều đó sẽ hữu ích.
Nguồn
2008-10-01 17:32:13
mãi mãi nếu bạn có khoảng thời gian KeepAlive chính xác, có liên quan: http://stackoverflow.com/questions/3907537/keep-alive-tcp-ip-connected-sockets-over-the-internet-when-how-and- how-much/5149662 # 5149662 – markmnl
Những gì mọi người trả lời vào năm 1999: https://ask.slashdot.org/story/99/09/19/2150236/longest-open-tcp-connection – user3041714