gpt4 book ai didi

java - 使用套接字 : Exception in thread "main" java. io.EOFException 的客户端-服务器

转载 作者:行者123 更新时间:2023-11-30 06:50:34 26 4
gpt4 key购买 nike

我正在编写简单的客户端-服务器程序,其中服务器正在监听所有传入连接并接受它们。一旦接受,客户端将数据(整数)发送到服务器,服务器将整数回显给客户端。这部分工作正常。此外,客户端在建立的连接上连续发送数据(使用 while 循环),这就是我遇到“java.io.EOFException”异常的地方。

服务器

监听端口:3344

收到:1 来自客户

监听端口:3344

客户端

输入要发送的数据:1

服务器回复:1

输入要发送的数据:2

线程“main”中出现异常 java.io.EOFException 在 java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2626) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 在 Node.main(Node.java:28)

客户端代码

    int serverPort = 3344;
Scanner sc = new Scanner(System.in);

Socket clientSocket = new Socket("localhost", serverPort);

ObjectOutputStream write = new ObjectOutputStream(clientSocket.getOutputStream());
ObjectInputStream read = new ObjectInputStream(clientSocket.getInputStream());
Integer writeData = new Integer(0);

while (true) {
System.out.println("Enter Data to send: ");
writeData = sc.nextInt();

write.writeObject(writeData);
write.flush();
Integer obj = (Integer) read.readObject();
if (obj.intValue() == -1) {
break;
}
System.out.println("Server replied : " + obj.toString());
System.out.println();
}

write.close();
read.close();

clientSocket.close();

服务器代码

        while (true) {
System.out.println("listening on port : " + listenPort);
try {
clientSocket = listener.accept();

write = new ObjectOutputStream(clientSocket.getOutputStream());
read = new ObjectInputStream(clientSocket.getInputStream());

int readInt = (Integer) read.readObject();

System.out.println("Received : " + readInt + " from client");

write.writeObject((Object) readInt);
write.flush();

//break;
}
finally {
write.close();
read.close();
clientSocket.close();
//listener.close();
}

最佳答案

您的客户端在循环外部连接到服务器,服务器在循环内部关闭客户端连接。

这意味着客户端尝试将数据写入属于已关闭连接的输出流。

关于java - 使用套接字 : Exception in thread "main" java. io.EOFException 的客户端-服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42880079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com