【发布时间】:2012-09-14 12:03:52
【问题描述】:
我正在做套接字编程。我有两个名为 Server.java 和 client.java 的文件。两个程序都成功运行并成功地相互发送数据。昨天我在 client.java 文件中添加了以下几行:
//old line
out.writeUTF(dbdata); //dbdata was written successfully and sent to the server program
try
{
//my socket connection object name is sock
String data1="1000";
System.out.println(data1);
out.writeUTF(data1); this line causes the error
}
catch(Exception e)
{
System.out.println("Exception :: "+e);
}
当执行 out.writeUTF(data1) 行并 catch 捕获它并将异常显示为 BROKEN PIPE。
读取data1的server.java的内容如下:
String data1;
try
{
data1=in.readUTF();
}
catch(Exception e)
{
System.out.println("Server Exception :: "+e);
}
我还检查了在 out.writeUTF(data1) 之前和在我执行 isConnected() 的 catch 中发生异常之后是否使用 isConnected() 打开了连接。两次都只显示 True。
【问题讨论】:
-
异常是-----java.net.SocketException: Broken pipe
-
试试这个有用的链接,别忘了打电话给
out.flush()保存和out.close()。 stackoverflow.com/questions/1053467/… -
isConnected() 不会告诉您连接是否仍然存在。它告诉你这个套接字是否曾经连接过。这不是一回事。