피어에 의한 연결 재설정이 발생합니다. 개체를 전송하려고 시도하는 동안 소켓 쓰기 오류가 발생하며 이유를 알 수 없습니다. 이것은 내 대학 프로젝트의 작은 부분이지만, 나는 그것이 작동하도록 많은 시간을 할애했지만, 나는 정말로 아이디어가 부족합니다. 당신의 도움에 정말 감사 할 것입니다. 클라이언트에 간단한 문자열 메시지를 보내려고했지만 제대로 작동합니다.피어에 의한 연결 재설정 : 소켓 쓰기 오류 개체 전송 시도 중
서버 코드 :
public class Server {
static ServerSocket serverSocket;
public static void main(String args[]) {
try {
serverSocket = new ServerSocket(7777);
Map map = new Map();
while(true)
{
Socket incoming = serverSocket.accept();
System.out.println(incoming.toString());
Runnable r = new ServerConnection(incoming, map);
Thread t = new Thread(r);
t.start();
}
}
}
ServerConnection 코드 :지도가 null 그리고 만약 출력이 아닌 경우 예, 확인
java.net.SocketException: Connection reset by peer: 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 Source)`
at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at Server.ServerConnection.sendMap(ServerConnection.java:39)
at Server.ServerConnection.run(ServerConnection.java:59)
at java.lang.Thread.run(Unknown Source)
: 인쇄 스택 트레이스는이 정보를 제공
public class ServerConnection implements Runnable {
private Socket s;
private ObjectOutputStream out;
private Map map;
public ServerConnection(Socket out, Map map){
this.s = out;
this.map = map;
System.out.println(map);
}
public void sendMap(){
//map.setRotation(rotated);
try {
out = new ObjectOutputStream(s.getOutputStream());
System.out.println(out);
System.out.println(this.map);
out.writeObject(this.map);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void closeSocket(){
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
//this.connect();
this.sendMap();
}
}
존재하는 등 나는 무엇이 문제를 유발하는지 모른다.
편집 : Object Map은 직렬화 가능합니다.
클라이언트 콘솔 출력 :
이Exception in thread "main" java.lang.NullPointerException
at Client.ClientConnection.getMap(ClientConnection.java:37)
at Client.Client.main(Client.java:28)
클라이언트 코드 :
public static void main(String[] args) {
ClientConnection c = new ClientConnection();
c.connect();
Map map = c.getMap();
System.out.println(map);
c.closeSocket();
}
가 ClientConnection : - serverString 지역 ADRES "127.0.0.1"입니다
public void connect(){
try
{
Socket s = new Socket(serverString,7777);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Map getMap(){
Map map;
try {
input = new ObjectInputStream(s.getInputStream());
map = (Map)(input.readObject());
return map;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void closeSocket(){
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
, 당신의'지도'클래스는 *, 직렬화하지 않고 * 피어가 연결을 닫았습니다. 귀하의 질문에'Map' 클래스의 코드와 수신 코드를 게시하십시오. – EJP