割り当てを行うときに私は不本意なブロックを見つけました。シンプルなサーバーとクライアントプログラムです。 このプログラムの詳細は次のとおりです。シンプルなクライアントサーバーのJavaプログラムがループしていない
- 着信接続をリッスンするサーバークラス
EncryptServer
を作成します。接続がある場合は、それを受け入れて入出力ストリームを処理するスレッドEncryptServerSession
を作成します。 - サーバークラスから入力ストリームと出力ストリームを取り込み、処理するスレッドクラス
EncryptServerSession
を作成します。 - サーバークラスに接続するクライアントクラス
EncryptClient
を作成し、出力ストリームをEncryptServerSession
からEncryptServer
にします。
EncryptClient
クラスのwhileループはどうにか動作しません。私はループに入ることができない。私のコードに何か問題がありますか?前もって感謝します。
EncryptServer
import java.net.*;
import java.io.*;
public class EncryptServer
{
public EncryptServer() throws IOException
{
ServerSocket serverSocket = new ServerSocket(1122);
System.out.println("Server started.");
while (true)
{
Socket conSocket = serverSocket.accept();
System.out.println("Client connected from " +
conSocket.getLocalAddress().getHostName());
Thread session = new
EncryptServerSession(conSocket.getInputStream(),
conSocket.getOutputStream());
session.start();
}
}
public static void main(String[] args)
{
try
{
EncryptServer server = new EncryptServer();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
EncryptServerSession
import java.net.*;
import java.io.*;
public class EncryptServerSession extends Thread
{
BufferedReader in;
Writer out;
public EncryptServerSession(InputStream inStream, OutputStream outStream)
{
Reader read = new InputStreamReader(inStream);
in = new BufferedReader(read);
out = new OutputStreamWriter(outStream);
}
public void strEncrypt()
{
try
{
String message = in.readLine();
out.write(message);
out.flush();
}
catch (Exception e)
{
}
}
public void run()
{
try
{
//System.out.println(in.readLine());
out.write("Please enter the message to be encrypted: ");
out.flush();
//strEncrypt();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
EncryptClient
import java.net.*;
import java.io.*;
public class EncryptClient
{
BufferedReader input, userTerm;
Writer output;
String line;
public EncryptClient() throws IOException
{
Socket clientSocket = new Socket("localhost", 1122);
Reader read = new InputStreamReader(clientSocket.getInputStream());
input = new BufferedReader(read);
userTerm = new BufferedReader(new InputStreamReader(System.in));
output = new OutputStreamWriter(clientSocket.getOutputStream());
/////////////// Somehow I cannot get into this loop, why? //////////
while (true)
{
System.out.println("test ");
System.out.println(input.readLine());
System.out.println("Enter message to be encrypted: ");
output.write(userTerm.readLine());
output.flush();
}
/////////////// Somehow I cannot get into this loop, why? //////////
}
public static void main(String[] args)
{
try
{
EncryptClient client = new EncryptClient();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
あなたEncryptClientコンストラクタを通過し、System.out.pritnln( "テスト")を追加してくださいでした。 (1つ1つ)ごとにそのようなものがありますか?それはあなたのコードのどの行が掛かっているのかを正確に知ることは役に立ちます。 –
EncryptClientのメインメソッドを実行する前にEncryptServerのmainメソッドを実行しましたか?そうでない場合は、サーバーを最初に実行してからクライアントを実行する必要があるため、この場合があります。ちなみに、実行後にあなたのコンソールには何の出力がありますか? –
ローカルホストが127.0.0.1に翻訳していない私の学校のネットワークで問題が発生しました。あなたはlocalhostではなく127.0.0.1でハードコーディングを試みることができます。私はネットワークではプロではないが、一発の価値がある。また、クライアントの前にサーバーを起動することも忘れないでください。エラーの原因は、ループの前のソケットとストリームです。 – noobcoder