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