[解決済み] スレッド「main」での例外 java.net.ConnectException: 接続拒否:接続 ソケット プログラミング Java
2022-03-12 03:33:31
質問
最近、クライアントとサーバー間のソケットプログラミングを学びました。そこで、クライアントとサーバーの両方を接続する演習を行おうと思いました。しかし、コードを実行しようとすると、このようなエラーメッセージに遭遇しました。 スレッド "main" java.net.ConnectException で例外が発生しました。接続が拒否されました: 接続
これは私のクライアントクラスのコードです。
public class clientpart {
public static void main(String[]args) throws UnknownHostException, IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
String host=null;
String answer; String sendMessage; String receivedMessage;
InetAddress address = InetAddress.getByName(host);
Socket socket= new Socket(address,port);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
System.out.println("Please answered the following question: ");
System.out.println("What is the subject code for Socket Programming?");
answer = input.nextLine();
sendMessage = answer;
bw.write(sendMessage);
bw.newLine();
bw.flush();
System.out.println("Message sent to server: "+sendMessage);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
receivedMessage = br.readLine();
System.out.println("Message received from server : " + receivedMessage);
}
}
これは私のサーバーのコードです。
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
String answer; String returnedMessage; String reply;
ServerSocket server = new ServerSocket(port);
System.out.println("Server start at port "+port+".");
while(true)
{
socket = server.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
answer = br.readLine();
System.out.println("Message sent from client: " + answer);
if("NET 3202".equals(answer) || "net 3202".equals(answer) || "NET3202".equals(answer) || "net3202".equals(answer)){
reply = "Correct!";
returnedMessage = reply;
}
else{
reply = "Wrong!";
returnedMessage = reply;
}
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
System.out.println("Message replied to client: "+returnedMessage);
bw.flush();
}
}
}
エラーメッセージの全文は
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:244)
at clientpart.main(clientpart.java:13)
C:\Users\PeiErn\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
どなたか助けていただけると幸いです、ありがとうございます。
どのように解決するのですか?
あなたのプログラムには2つの問題があります。
-
ポート
80
の一部である 有名ポート または システムポート (0〜1023)のため、管理者権限でサーバーを起動するか、または8080
を例にとって説明します。 -
を呼び出すのを忘れています。
bw.newLine()
の後にbw.write(sendMessage)
を呼び出してから、ずっと待機するようにします。br.readLine()
つまり、行末文字を送らない間は、1行分待つということです。
このためにコードを変更します。
サーバー部分です。
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
...
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
...
出力する。
Server start at port 8080.
Accepted
Message sent from client: net3202
Message replied to client: Correct!
クライアント部分です。
public class clientpart {
public static void main(String[]args) throws IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
...
bw.write(sendMessage);
bw.newLine();
bw.flush();
...
出力する。
Please answered the following question:
What is the subject code for Socket Programming?
net3202
Message sent to server: net3202
Message received from server : Correct!
関連
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] Java の substring() の時間複雑性
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] [Solved] java.net.ConnectException: 接続が拒否されました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] タイプの安全性。アンチェック・キャスト