Socket Programming java - сокет қосылымы қанша тұрады? Мен оны қалай басқара аламын?

Розеткаға ешқандай әрекеттер жасамасам, розетка байланысын қалай сақтай аламын? Мен тек қана менің байланысым фонда болса және оны пайдаланбай жатқанын байқадым:

java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.DataOutputStream.writeInt(Unknown Source)

Мәселен, қандай да бір бос уақыттан кейін қосылыс жоғалмайтындығын және әдепкіде бұл қанша уақыт өткеннен кейін қалай басқара аламын?

1
@ KlasLindbäck Жоқ, ол жоқ. Мұнда бірден мәселе - қалпына келтіру.
қосылды автор EJP, көзі
қосылды автор Klas Lindbäck, көзі

2 жауаптар

Бұл мәселе жалпы шешімге ие емес. TCP/IP байланысын қалпына келтіруді/жабуды шешкен қашықтағы сервер/қызмет болуы мүмкін. Қалай және неге ол шешеді - нақты қолдану. Проблеманың алдын алу үшін бағдарламаға арнайы шешім қажет болады.

FWIW, SO_KEEP_ALIVE тетігі хаттаманың стекін кейде басқа TCP/IP қосылымына хабарламаларды алмасуға әкеп соғады. Порт қайта пайдалануына байланысты NATе байланысында қалпына келтірсеңіз, бұл көмектесуі мүмкін. Тиісті Java әдісі Socket.setKeepAlive .

2
қосылды
keepalive күту уақытының ұзақтығын басқарудың кез келген тәсілі?
қосылды автор MeBigFatGuy, көзі
Жақсы рахмет, Сіз көрсеткен механизмге қандай да бір сілтеме жасай аласыз ба, мен мұны істей аламын, егер ол көмектессе, ubuntu серверімде жүгіремін.
қосылды автор Mulder, көзі

Қосылым арқылы теңестіру: сокет жазу қатесі

Бұл, әдетте, теңдестірілген жабылған қосылымға жазу арқылы туындады. Бұл бағдарлама хаттамасының қатесі. Байланыстық өмір туралы алаңдаушылық тудырмас бұрын оны алдын-ала зерттеңіз.

1
қосылды