package cn.campsg.java.experiment;
import cn.campsg.java.experiment.service.DeskServer;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket=null;
int port = 9999;
int counter = 0;
try {
serverSocket = new ServerSocket(port);
while (true) {
Socket client = serverSocket.accept();
System.out.println("已获取客户端连接@" + client);
counter++;
new Thread(new DeskServer(client), "客户端@ " + counter).start();
}
} catch (IOException e) {
System.out.println("服务器端出错……" + e.getMessage());
}
}
}
package cn.campsg.java.experiment;
import cn.campsg.java.experiment.service.AskClient;
import cn.campsg.java.experiment.service.DeskServer;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Clients {
public static void main(String[] args) {
int srvPort1 = 1;int srvPort2 = 2;int srvPort3 = 3;int srvPort4 = 4;
String srvIP = "127.0.0.1";
int port = 9999;
try {
Socket socket1 = new Socket(srvIP,srvPort1);
Socket socket2 = new Socket(srvIP,srvPort2);
Socket socket3 = new Socket(srvIP,srvPort3);
Socket socket4 = new Socket(srvIP,srvPort4);
new Thread(new AskClient(socket1,"CA1893"),"问询者@CA1893").start();
new Thread(new AskClient(socket2,"CZ3590"),"问询者@CZ3590").start();
new Thread(new AskClient(socket3,"FM9802"),"问询者@FM9802").start();
new Thread(new AskClient(socket4,"XS9882"),"问询者@XS9882").start();
} catch (IOException e) {
System.out.println("服务器端出错……" + e.getMessage());
}
}
}
package cn.campsg.java.experiment.service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class AskClient implements Runnable{
Socket socket = null;
String askInfo;
public AskClient(Socket socket, String askInfo) {
this.socket = socket;
this.askInfo = askInfo;
}
@Override
public void run() {
InputStream in = null;
OutputStream os = null;
try {
os = socket.getOutputStream();
in = socket.getInputStream();
} catch (IOException ie) {
System.out.println("建立与服务端连接时异常:@:"+ie.getMessage());
}
String ask = Thread.currentThread().getName()+":请问["+askInfo+"]在哪里登机?" ;
try {
os.write(ask.getBytes("UTF-8"));
os.flush();
} catch (IOException e) {
System.out.println("服务端端已关闭或无法连接……@"+e.getMessage());
}
byte[] bytes = new byte[1024];
try {
in.read(bytes);
System.out.println(Thread.currentThread().getName()+"咨询结果:"+new String(bytes).trim());
} catch (IOException e) {
System.out.println("获取返回结果时异常:@"+e.getMessage());
}
try {
os.close();
in.close();
socket.close();
System.out.println("咨询者已咨询完毕。");
} catch (IOException e) {
System.out.println("关闭客户端连接异常:@"+e.getMessage());
}
}
}
package cn.campsg.java.experiment.service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class DeskServer implements Runnable{
private Socket socket = null;
public DeskServer(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
InputStream in = null;
OutputStream os = null;
try {
os=socket.getOutputStream();
in=socket.getInputStream();
}catch (IOException e){
System.out.println("客户端已关闭,等待重新连接……@"+e.getMessage());
}
byte[] bytes= new byte[0];
try {
bytes = new byte[in.available()];
} catch (IOException e) {
e.printStackTrace();
}
try {
in.read(bytes);
} catch (IOException e) {
e.printStackTrace();
}
String ask=new String(bytes).trim();
System.out.println("服务端@前端咨询内容为:"+ask);
String result = " ";
if (ask.contains("CA")){
result="乘客您好,国航在2楼9号登机口!\\r";
}else if(ask.contains("CZ")){
result="乘客您好,南航在1楼6号登机口!\r";
}else if(ask.contains("FM")){
result="乘客您好,上航在2楼12号登机口!\r";
}else{
result="乘客您好,抱歉,暂无您的航班登机信息!\r";
}
try {
os.write(result.getBytes("UTF-8"));
os.flush();
} catch (IOException e) {
System.out.println("客户端已关闭,等待重新连接……@"+e.getMessage());
}finally{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};