我有一个ServerMain和一个ClientMain,它们为客户端和服务器线程提供套接字.然后,我try 使用相同的方法创建对象流,但得到一个错误.
ServerMain的错误:
java.net.SocketException: An established connection was aborted by the software in your host machine
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:325)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2875)
at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2891)
at java.base/java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3388)
at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:959)
at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:397)
at abstractClass.initializeStreams(abstractClass.java:17)
at MulServerThread.run(MulServerThread.java:12)
abstractClass个
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public abstract class abstractClass extends Thread {
protected Socket socket;
protected ObjectInputStream in;
protected ObjectOutputStream out;
protected abstractClass(Socket socket) {
this.socket = socket;
}
protected void initializeStreams() {
try {
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
Thread.currentThread().interrupt();
}
}
}
Client个
import java.io.IOException;
import java.net.Socket;
public class ClientMain {
public static void main(String[] args) {
try (Socket server = new Socket("localhost", 3141)) {
Client client = new Client(server);
client.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
import java.net.Socket;
class Client extends abstractClass {
Client(Socket socket) {
super(socket);
}
@Override
public void run() {
initializeStreams();
}
}
Server个
import java.io.IOException;
import java.net.ServerSocket;
public class ServerMain {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(3141);
MulServerThread mulThread = new MulServerThread(serverSocket.accept());
mulThread.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
import java.net.Socket;
class MulServerThread extends abstractClass {
public MulServerThread(Socket socket) {
super(socket);
}
@Override
public void run() {
initializeStreams();
}
}
它想让我写更多.所以,是的,这是代码的精简版本,所以您不必阅读所有不相关的内容.