現在、サーバー側(TcpServer.java)とクライアント側(TcpClient.java)で、それぞれテキストファイル(client_send.txt,server_send.txt)を送りあうプログラムを実行したいのですが、うまくいきません。どのように修正すればうまくいきますでしょうか。ご協力お願いいたします。
動作環境はeclipseです。
エラー内容
java.net.ConnectException: Connection refused: connect
at java.base/java.net.PlainSocketImpl.connect0(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:609)
at java.base/java.net.Socket.connect(Socket.java:558)
at java.base/java.net.Socket.<init>(Socket.java:454)
at java.base/java.net.Socket.<init>(Socket.java:231)
at chap01.TcpClient.main(TcpClient.java:10)
TcpClient.java
ーー以下コードの中身ーー
package chap01;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TcpClient {
public static void main(String[] args) throws Exception {
try (Socket socket = new Socket("localhost", 8001);
FileInputStream fis = new FileInputStream("client_send.txt");
FileOutputStream fos = new FileOutputStream("client_recv.txt")) {
int ch; // client_send.txtの内容をサーバに送信 OutputStream output = socket.getOutputStream(); while ((ch = fis.read()) != -1) { output.write(ch); } // 終了を示すため、ゼロを送信 output.write(0); // サーバからの返信をclient_recv.txtに出力 InputStream input = socket.getInputStream(); while ((ch = input.read()) != -1) { fos.write(ch); } } catch (Exception ex) { ex.printStackTrace(); } }
}
TcpServer.java
ーー以下コードの中身ーー
package chap01;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] argv) throws Exception {
try (ServerSocket server = new ServerSocket(8001);
FileOutputStream fos = new FileOutputStream("server_recv.txt");
FileInputStream fis = new FileInputStream("server_send.txt")) {
System.out.println("クライアントからの接続を待ちます。");
Socket socket = server.accept();
System.out.println("クライアント接続。");
int ch; // クライアントから受け取った内容をserver_recv.txtに出力 InputStream input = socket.getInputStream(); // クライアントは、終了のマークとして0を送付してくる while ((ch = input.read()) != 0) { fos.write(ch); } // server_send.txtの内容をクライアントに送付 OutputStream output = socket.getOutputStream(); while ((ch = fis.read()) != -1) { output.write(ch); } socket.close(); System.out.println("通信を終了しました。"); } catch (Exception ex) { ex.printStackTrace(); } }
}
ロケーション
C:\pleiades\workspace\WebApi\src\chap01 以下、配下
→client_send(テキストファイル)
→server_send(テキストファイル)
→TcpClient.java
→TcpServer.java
あなたの回答
tips
プレビュー