Java中的套接字问题
|
我有以下线程可以接受特定端口上的传入连接:
public class ClientThread implements Runnable {
ServerSocket serverSocket;
Socket clientSocket;
int serverPort = 6500;
private String serverIpAddress = \"127.0.0.1\";
DataInputStream is;
ObjectOutputStream os=null;
Coordinate coord;
protected BlockingQueue queue = null;
public ClientThread(BlockingQueue queue) {
this.queue = queue;
}
public void run() {
try {
InetSocketAddress serverAddr = new InetSocketAddress(
serverIpAddress, serverPort);
serverSocket = new ServerSocket();
serverSocket.bind(serverAddr);
System.out.println(\"s-a creat\");
} catch (UnknownHostException e) {
System.err.println(\"Don\'t know about host\");
} catch (IOException e) {
System.err.println(\"Couldn\'t get I/O for the connection to host\");
}
try {
clientSocket = serverSocket.accept();
System.out.println(\"S-a conectat clientul de monitorizare!\");
os=new ObjectOutputStream(clientSocket.getOutputStream());
try{
while(true){
coord=(Coordinate)queue.take();
System.out.println(coord.getLat()+coord.getLon()+coord.getwId());
os.writeObject(coord);
os.flush();
}
} catch(Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
System.out.println(e);
try {
clientSocket.close();
os.close();
}catch(Exception e1) {
e1.printStackTrace();
}
}
}
}
我尝试发送的对象是以下类的实例:
public class Coordinate implements Serializable{
private final int lon;
private final int lat;
private final int workerId;
public Coordinate(int lat, int lon, int workerId) {
this.lat = lat;
this.lon = lon;
this.workerId=workerId;
}
public int getLon() {
return lon;
}
public int getLat() {
return lat;
}
public int getwId() {
return workerId;
}
}
但是,当我启动线程并接受连接时,出现以下错误:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown
at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at servers.ClientThread.run(ClientThread.java:55)
at java.lang.Thread.run(Unknown Source)
任何人有什么不好的想法吗?
此错误java.net.SocketException:当套接字端之一崩溃时,会出现由软件引起的连接中断。...在我的情况下,是连接到ClientThread()的一端,而当我尝试写入缓冲区时,出现了错误。
没有找到相关结果
已邀请:
1 个回复
版萍层分
是什么意思?这意味着连接已关闭,但是您尝试将一些数据写入套接字。但是我可能是错的。