AMG Solution

【エラー解決方法】socket(クライアント側)のタイムアウトを設定する方法

 
Javaでsocket通信をしようとして、サーバーとの接続ができない場合がありました。
その際にタイムアウトを指定しないと、デフォルトのタイムアウトが適用されてしまい、予想以上に処理が止まってしまう場合がありました。
 
 

エラー内容

socket通信でサーバーと接続した際に、コネクションができず数十秒処理が停止してしまう現状が発生していた。

java.net.SocketTimeoutException: connect timed out

 

エラー発生時の環境

エラー発生時の開発環境は以下のとおりです。

言語 Java1.7.0_51

 

原因

socketのコネクトを、コンストラクタで行っていた為、タイムアウトが指定できなかった。

 

解決方法

Socketクラスの引数なしコンストラクタを使用して、接続されていないソケットを作成する。
その後、connectメソッドを使用してタイムアウトを設定し、接続を行う。

 

まとめ

できればコネクションで接続する場合にも、引数でタイムアウトを指定できるようにして欲しかったところですが、現時点では用意されていないので、段階を踏んで対応しましょう。

YAMAGUCHI'S BLOG

山口博史の記事

山口博史の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

新卒採用
はじめました。
LOADING