###前提・実現したいこと
javaでTCP/IPを使って通信するためのプログラムを作りたいです
受信する側(サーバー側?)のプログラムは一応接続待ちになるところまでは動かせたのですが、
クライアント側?のほうの接続をしようとするところで問題のエラーが出てしまっています
一応IPやポートを変えて試してはみたのですが、同じエラーメッセージでした
ちなみに現在設定しているポートは10000で試してみました
が、endpoint(SocketAddress)の中身をみてみるとメンバのportの値が9999になってたり、hostnameの値もnullが入ってたりで…
他に何か考えられそうな問題点を指摘していただけるとありがたいです。。
###発生している問題・エラーメッセージ
Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at adaputa_dummy.dummy.trans(dummy.java:162) at adaputa_dummy.dummy.main(dummy.java:53)
###クライアントプログラム
java
1//dummy.java 2 String server = "localhost"; 3 int port = Integer.parseInt(conf.getProperty("trans_port")); // サーバー側のポート番号 4 SocketAddress endpoint= new InetSocketAddress(server, port); 5 Socket s = new Socket(); 6 ★s.connect(endpoint, 2000); 7 8 // サーバーに数値を送信 9 OutputStream os = s.getOutputStream(); 10 DataOutputStream dos = new DataOutputStream(os); 11 12//以下略
###サーバープログラム
/** * コンストラクタ * @throws IOException */ public TransDummy() throws IOException { String file="./conf/conf.properties"; conf = new Properties(); conf.load(new FileInputStream(file)); ss = new ServerSocket(Integer.parseInt(conf.getProperty("trans_port"))); //接続待ち for(;;){ connect(); } } /** * との接続を行う * @throws IOException */ private void connect() throws IOException{ logger.info("Connection開始"); //ここでとまって接続待ち状態になります ★s = ss.accept(); InputStream is = s.getInputStream(); DataInputStream input = new DataInputStream(is); byte[] msg = new byte[12]; input.read(msg, 0, 12); //受信メッセージ内容確認 System.out.println("受信メッセージ内容:"); for(int i = 0; i< msg.length; i++){ System.out.print(Integer.toHexString(msg[i] & 0xff) + " "); } System.out.println(); //受信メッセージの長さだけチェック if(msg.length == 12){ //メッセージを受信した場合の処理です response(Integer.parseInt(conf.getProperty("trans_response")), msg); } else{ logger.warning("受信データエラー"); System.exit(1); } logger.info("Connection終了"); }
###試したこと
色々通信の設定を変えて試してみたり、
他にはコンパネ→システムとセキュリティ→Windowsファイアウォールによるアプリケーションの許可→リモートデスクトップの許可にチェックをいれてみたり。。(ポートの解放?)
回答3件
あなたの回答
tips
プレビュー