質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

0回答

765閲覧

Java アプリケーションを動かしたい

asuka.Mir

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/03/30 14:50

現在、サーバー側(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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/03/30 15:36

それぞれどう動かす想定なのでしょうか。 「サーバー側」がどう動いているかとか 階層としてどこにあるかとか そのあたりがはっきりしてないと思います。 あと、コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564
m.ts10806

2021/03/30 15:45

それにコードだけ読むとどっちもクライアントでコマンド実行してるだけに見えるんですが・・。 やはり、実行方法も含めて具体的に構想を記載してください。
dodox86

2021/03/30 15:49

サーバー側、クライアント側、それぞれ、どう動かしているのか(起動しているのか)、手順や環境などをちゃんと説明しましょう。 > java.net.ConnectException: Connection refused: connect と言うエラーの場合、大抵、サーバー側の待ち受け(LISTEN)しているポートに接続できないことを示しています。
dodox86

2021/03/30 16:47

(m.ts10806さんが既に指摘済みでした。重複失礼しました)
dodox86

2021/03/30 23:40

まぁ、あと、必須(必ず直して)とまでは言いませんが、質問の件名は極力問題や質問の内容を表したものにしましょう。「TCPクライアントプログラムを起動するとエラーで終了してしまう」とか。(<これが本当によいかは再考の余地ありそうですが) 「Javaアプリケーションを動かしたい」だと、恐らくはJavaのプログラム全般に言えることであり、ただの願望です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問