2回目に何かを入力すると(ホスト名を入力した後)、24行目に例外がスローされます。サーバーは正常に動作します。コード
import java.io.*;
import java.net.*;
class TCPclient {
public static void main(String[] args) throws Exception {
String hostname, msg;
InetAddress hostaddress;
BufferedReader inFromUser = new BufferedReader (new InputStreamReader(System.in));
System.out.println("Please type host\n");
hostname = inFromUser.readLine(); //I type localhost
hostaddress = InetAddress.getByName(hostname);
Socket cSocket = new Socket(hostaddress, 44444);
String cAddress = cSocket.getLocalSocketAddress().toString();
DataOutputStream outToServer = new DataOutputStream (cSocket.getOutputStream());
while (true)
{
msg = inFromUser.readLine();
System.out.println(msg);
if (msg.equals("exit"))
{
System.out.println("exit");
break;
}
outToServer.writeBytes(cAddress + " said : " + msg + '\n'); //this line throws an exception the second time it runs
}
cSocket.close();
}
}
私はJavaを初めて使用するので、明らかな何かが欠けていると思います。例外読み取り:
スレッド"main"の例外java.net.SocketException:ソフトウェアが原因で接続が異常終了しました:java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)のjava.net.SocketOutputStream.socketWrite0(ネイティブメソッド)でソケット書き込みエラーが発生しました。 net.SocketOutputStream.write(SocketOutputStream.java:115)at java.io.DataOutputStream.writeBytes(DataOutputStream.java:259)at TCPclient.main(TCPClient.java:52)Java結果:1
サーバー:
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String clientSentence;
ServerSocket welcomeSocket = new ServerSocket(44444);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream( ) ) );
clientSentence = inFromClient.readLine();
System.out.println(clientSentence + "\n");
}
}
}