gpt4 book ai didi

java - 在互联网上使用程序时,ObjectInputStream$BlockDataInputStream.peekByte

转载 作者:行者123 更新时间:2023-12-01 11:37:57 24 4
gpt4 key购买 nike

我使用 TCP 创建了一个应用程序,当我在 127.0.0.1 的本地网络上使用它时,它工作得很好,但当客户端尝试从另一个网络连接到他时,服务器拒绝工作.

我不知道此错误意味着什么以及如何解决它,并且我无法理解应用程序只能在 LAN 上运行。

public class Reception {

InputStream inObjet = null;
BufferedReader inString = null;
ObjectInputStream recVec2i = null;

public Reception(Socket socket) {
try {
this.inObjet = socket.getInputStream();
this.inString = new BufferedReader(new InputStreamReader(socket.getInputStream()));
this.recVec2i = new ObjectInputStream(inObjet);
} catch (IOException ex) {
Logger.getLogger(Reception.class.getName()).log(Level.SEVERE, null, ex);
}
}

public Vecteur2i recevoir() {
Vecteur2i to = new Vecteur2i();
try {

to = (Vecteur2i) recVec2i.readObject();

} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Reception.class.getName()).log(Level.SEVERE, null, ex);
to = new Vecteur2i(1000, 1000);
}
return to;
}

public String recevoirString() {
String chaine = "";
try {
chaine = inString.readLine();
} catch (IOException ex) {
Logger.getLogger(Reception.class.getName()).log(Level.SEVERE, null, ex);
}
return chaine;
}

public void fermerReception() {
try {
inString.close();
} catch (IOException ex) {
Logger.getLogger(Reception.class.getName()).log(Level.SEVERE, null, ex);
}
try {
inObjet.close();
} catch (IOException ex) {
Logger.getLogger(Emission.class.getName()).log(Level.SEVERE, null, ex);
}
try {
recVec2i.close();
} catch (IOException ex) {
Logger.getLogger(Reception.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

这里有一个异常(exception):

avr. 22, 2015 9:33:33 PM Snake.Reception recevoir Grave: null java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2597) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1316) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at Snake.Reception.recevoir(Reception.java:41) at Snake.Partie.cycleDeJeu(Partie.java:55)

问候,

最佳答案

当其中一个或多个被缓冲时,您不能通过同一个套接字混合不同类型的流,并且 BufferedInputStreamObjectInputStream 都被缓冲。缓冲区会互相“窃取”数据。在您的情况下,您应该通过对象流执行所有 I/O。它具有基于字符串的方法。

关于java - 在互联网上使用程序时,ObjectInputStream$BlockDataInputStream.peekByte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807378/

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