第二次輸入內容(在輸入主機名後)第24行拋出異常 - 服務器正常工作。代碼java DataOutputStream異常
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,所以我失去了一些顯而易見的東西。異常寫着:螺紋
異常 「主」 java.net.SocketException異常:在java.net.SocketOutputStream.socketWrite0(本機方法) 插座寫 錯誤 在java.net上:軟件 導致連接中斷.SocketOutputStream.java:92(SocketOutputStream.java:92) at java.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");
}
}
}
相關:http://stackoverflow.com/questions/2126607/official-reasons-for-software-caused-connection-abort-socket-write-error – BalusC 2010-06-30 16:57:50
謝謝 - 我認爲這對我來說一定是簡單的 - 「服務器」總是接收我輸入的第一個字符串,而我在第二個字符串上遇到異常 - 這不是我混淆了我的字符串或任何東西 – 2010-06-30 17:02:41
@dardana:這很很難知道發生了什麼,不知道服務器是什麼。 – 2010-06-30 17:11:44