0

基本的にサーバーからクライアントに配列リストを送信したいので、シリアル化する必要があるため、ObjectI/OStream を使用しています。しかし、これはクライアント/サーバープログラムを作成するのは初めてなので、その方法がよくわかりません。クライアント プログラムで ObjectInputStream コンストラクターを作成することさえできません。エラーが発生します:

スレッド「メイン」での例外 java.net.SocketException: ピアによる接続のリセット: java.net.SocketOutputStream.socketWrite0 (ネイティブ メソッド) でのソケット書き込みエラー java.net.SocketOutputStream.socketWrite(不明なソース) での java.net.SocketOutputStream .write(不明なソース) at java.io.ObjectOutputStream$BlockDataOutputStream.drain(不明なソース) at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(不明なソース) at java.io.ObjectOutputStream.(不明なソース) 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);
    }
}

}

サーバーコード。最初にテキスト ファイルをスキャンしてから、sales オブジェクトを 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;
}

}
4

2 に答える 2

0

これは、 http: //www.tutorialspoint.com/java/java_networking.htm のソケット プログラミングに関するかなり良い例です。

于 2013-04-27T05:53:09.620 に答える
0
  1. クライアント コードがコンパイルされません。

  2. I/O を実行する前に終了し、ソケットを閉じます。これにより、反対側で例外が発生します。

于 2013-04-27T06:06:40.673 に答える