java.io.StreamCorruptedException:无效的流头:72657175
嘿,我正在实现一个基于客户机-服务器聊天的电子投票系统。 当我运行服务器时,它运行没有任何问题,但也没有打印,客户端也没有。但是,一旦我向客户机提供输入,它就会出现以下异常并崩溃。这是服务器和客户端的代码。那么你认为我应该怎么启动引擎呢java.io.StreamCorruptedException:无效的流头:72657175,java,sockets,Java,Sockets,嘿,我正在实现一个基于客户机-服务器聊天的电子投票系统。 当我运行服务器时,它运行没有任何问题,但也没有打印,客户端也没有。但是,一旦我向客户机提供输入,它就会出现以下异常并崩溃。这是服务器和客户端的代码。那么你认为我应该怎么启动引擎呢 package engine; import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.Calendar; import java.util.Co
package engine;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
public class Server {
ServerSocket server;
int port = 6000;
public Server() {
try {
server = new ServerSocket(6000);
} catch (IOException e) {
e.printStackTrace();
}
}
public void handleConnection(){
try {
while(true){
Socket connectionSocket;
connectionSocket = server.accept();
new ConnectionHandler(connectionSocket);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.handleConnection();
}
}
class ConnectionHandler implements Runnable {
Socket connectionSocket;
Calendar votingStartTime;
Calendar votingEndTime;
boolean timeUp;
ObjectInputStream inFromClient;
ObjectOutputStream outToClient;
BufferedWriter outToFile;
BufferedReader inFromAdmin;
ArrayList<SingleClient> clients = new ArrayList<SingleClient>();
ArrayList<Candidate> candidates;
这是客户机的主要方法,只要我给出输入,就会出现异常:
public static void main(String[] args) throws Exception {
client c = new client();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
while(true){
input = br.readLine();
if(input.equals("0")){
c.register();
}else if(input.equals("1")){
c.login();
}else if(input.equals("2")){
c.listCandidates();
}else if(input.equals("3")){
c.vote();
}else if(input.equals("4")){
c.checkResults();
}else if(input.equals("5")){
c.checkFinalResults();
}else if(input.equals("6")){
c.logout();
}else {
break;
}
}
}
}
在没有看到相关代码的情况下,我猜您正在现有套接字InputStream上重新创建ObjectInputStream。必须为每个套接字创建一次对象流,并重复使用它们,直到完全完成套接字连接。此外,您应该始终在创建后立即刷新ObjectOutputStream以避免死锁。您可以将代码缩减到重要部分吗?没有人对阅读您编写的其他几百行代码感兴趣。我将异常的两个部分放在这里@Boltclockon@Vanathi的问题例外名称和附带的数字是问题名称。您需要显示创建流的代码和使用流的代码。我目前看到的是前者中的一些,而不是后者。这些都是在构造函数中初始化的,因为它们是实例变量。这是第一个initilization@KarimFakhry-连接的另一端呢?嘿,伙计们,我想说我终于能够解决这个异常,我发现了它为什么会出现,所以我想说,如果每个人都使用这个解决方案,我通过DataOutputStream发送字符串,并尝试通过ObjectInputStream接收它,所以头球碰撞。
public static void main(String[] args) throws Exception {
client c = new client();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
while(true){
input = br.readLine();
if(input.equals("0")){
c.register();
}else if(input.equals("1")){
c.login();
}else if(input.equals("2")){
c.listCandidates();
}else if(input.equals("3")){
c.vote();
}else if(input.equals("4")){
c.checkResults();
}else if(input.equals("5")){
c.checkFinalResults();
}else if(input.equals("6")){
c.logout();
}else {
break;
}
}
}
}