AB两端通信 
A段启动之后不停发送1-4,之后等待另一端响应! 
B端随机数产生(0-9)如果是1的话告诉对方发送失败 ,在哪产生的失败告知对方(在2的地方失败)
A端则从新发送2-4,如果发送成功的话,A段将继续发送5-8,以此类推1-4,5-8。1-4,5-8

解决方案 »

  1.   

    public class Client {
        Socket socket;
        ObjectOutputStream out;
        DataInputStream in;
        
        public Client() throws UnknownHostException, IOException {
             socket = new Socket("127.0.0.1", 4444);
             out = new ObjectOutputStream(socket.getOutputStream());
             in = new DataInputStream(socket.getInputStream());
        }    public void send(List<User> users) throws IOException, InterruptedException {
            out.writeInt(users.size());
            out.flush();
            Thread.sleep(5000);
            for (int i = 0; i < users.size(); i++) {
                User user = users.get(i);
                out.writeObject(user);
                out.flush();
                Thread.sleep(5000);
                int flag = receive();
                if (flag == 1) {
                    System.out.println("send successful.");
                }
                if (flag == 0) {
                    System.out.println("send failure.");
                }        }
            in.close();
            out.close();
            socket.close();
        }    public int receive() throws IOException {
            return in.readInt();
        }    public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
            List<User> users = new ArrayList<User>();
            User u1 = new User(1);
            User u2 = new User(2);
            User u3 = new User(3);
            User u4 = new User(4);
            User u5 = new User(5);
            User u6 = new User(6);
            users.add(u1);
            users.add(u2);
            users.add(u3);
            users.add(u4);
            users.add(u5);
            users.add(u6);
            Client c = new Client();
            c.send(users);
        }
    }class User implements Serializable {    private int id;    public User() {
        }    public User(int id) {
            this.id = id;
        }    public void setId(int id) {
            this.id = id;
        }    public int getId() {
            return id;
        }    public String toString() {
            return "[" + id + "]";
        }
    }
    ===========================================================================================================================
    public class ServerClient {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            ServerSocket ss = new ServerSocket(4444);
            if (ss != null) {
                System.out.println("server starts....");
            }
            
            Socket s = ss.accept();
            ObjectInputStream in  = new ObjectInputStream(s.getInputStream());
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            int size = in.readInt();
            System.out.println("接收数量是:" + size);        for (int i = 0; i < size; i++) {
                Object obj = in.readObject();
                if (obj instanceof User) {
                    User user = (User) obj;
                    System.out.println("Server:" + user);
                    out.writeInt(1);
                    out.flush();
                } else {
                    out.writeInt(0);
                    out.flush();
                }
            }
            s.close();
            System.out.println("over.");
        }
    }
      

  2.   

    我写服务器可以接受客户端信息,客户端为什么接收不到服务端的error?
    public class Client{
    private Socket s;
    private PrintWriter out;
    private BufferedReader in1,in;
    public Client() throws IOException, InterruptedException {
    /*
    BufferedReader in = new BufferedReader
    (new InputStreamReader(System.in));
    System.out.print("请输入IP地址 >");
    strIP = in.readLine();
    */


    s=new Socket("127.0.0.1",9000);
    out=new PrintWriter(s.getOutputStream());
    in1=new BufferedReader(new InputStreamReader(s.getInputStream()));
    in = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("发送的信息 >");
    String s = in.readLine();
    for(int i=0;i<4;i++){
    out.println(i+s);
    Thread.sleep(900);
    out.flush();
    System.out.println("发送信息"+i+s);
    }
    if(in1.readLine().equals("error")){
    System.out.println("错误");
    }
    System.out.println("等待对方响应...");
    }
    public static void main(String[] args) throws IOException, InterruptedException {
    new Client();
    }}
    public class Server {
    public static void main(String[] args) throws Exception{

    List<Socket> sockets=new ArrayList<Socket>();
    ServerSocket ss=new ServerSocket(9000);
    System.out.println("启动服务成功!");
    while(true){
    Socket s=ss.accept();
    sockets.add(s);
    Thread t=new ServerThread(s,sockets);
    t.start();
    }

    }
    }class ServerThread extends Thread{
    private Socket s;
    private List<Socket> sockets;
    public ServerThread(Socket s, List<Socket> sockets) {
    super();
    this.s = s;
    this.sockets = sockets;
    } public void run(){
    try {

    BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
    while(true){
    String text=in.readLine();
    if (text==null) break;
    Iterator<Socket> it=sockets.iterator();
    while(it.hasNext()){
    Socket s2=(Socket)it.next();
    PrintWriter out=new PrintWriter(s2.getOutputStream());
    if(text.equals("1")){
    out.println("error");

    }
    out.flush();
    System.out.println(text);
    }
    }


    } catch (IOException e) {
    }

    finally{
    sockets.remove(s);
    try {
    s.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }