Я в основном хочу отправить arraylist от сервера к моему клиенту, и он должен быть сериализован, поэтому я использую ObjectI/OStream. Но это при первом создании программы клиент/сервер, поэтому я действительно не знаю, как это сделать. Я даже не могу построить конструктор ObjectInputStream в клиентской программе. Я получаю сообщение об ошибке:Попробуйте получить ObjectInputStream с сервера (TCP) для десериализации объектов
Exception in thread "main" 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.(Unknown Source) at SalesServer.main(SalesServer.java:35)
Код: Код
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class SalesClient {
public static void main(String[] args) throws IOException{
Socket ssocket = null;
ObjectOutputStream out = null;
ObjectInputStream inp = null;
Scanner in = null;
try {
ssocket = new Socket("FahadAhmed-PC", 6667);
in = new Scanner(System.in);
inp = new ObjectInputStream();
}catch(UnknownHostException e) {
System.err.println("Don't know about host: FahadAhmed-PC");
System.exit(1);
}catch(IOException e){
System.err.println(e);
System.exit(1);
}
}
}
Server. Сначала она сканирует текстовый файл, а затем добавляет продажи объекта ArrayList:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Scanner;
public class SalesServer {
public static void main(String[] args) throws IOException{
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(6667);
} catch (IOException e){
System.out.println("Could not listen on port: 5555.");
System.exit(1);
}
Socket clientSocket = null;
try{
clientSocket = serverSocket.accept();
}catch (IOException e){
System.out.println("Accept failed.");
System.exit(1);
}
ArrayList<Sales> salesList = getSalesList();
ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
}
private static ArrayList<Sales> getSalesList() throws FileNotFoundException {
ArrayList<Sales> list = new ArrayList<Sales>(10);
Scanner in = new Scanner(new BufferedReader(new FileReader("sales.txt")));
while(in.hasNext()){
String state;
int q1, q2, q3, q4;
state = in.nextLine();
q1 = in.nextInt();
q2 = in.nextInt();
q3 = in.nextInt();
q4 = in.nextInt();
in.nextLine();
Sales sale = new Sales(state, q1, q2, q3, q4);
System.out.println(sale.toString());
list.add(sale);
}
return null;
}
}
Какую версию JDK вы используете? Если вы используете JDK7, то я могу дать вам образец с использованием NIO2, который работает лучше, чем блокирование. –