//创建对应的服务器端通道
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
System.out.println("-----------服务提供方启动-------------");
//开启一个选择器 将自己要
Selector selector = Selector.open();
//绑定端口开启
serverSocketChannel.bind(new InetSocketAddress(port));
//设置阻塞
serverSocketChannel.configureBlocking(true);
//真正的业务逻辑 就是下面
//循环等待客户端的连接和检查事件的发生
while (true)
{
SocketChannel channel = serverSocketChannel.accept();
System.out.println("来自"+channel.socket().getRemoteSocketAddress()+"的连接");
new Thread(new Runnable() {
@Override
public void run() {
try {
//在内部不断的进行监听
InputStream inputStream = channel.socket().getInputStream();
OutputStream outputStream = channel.socket().getOutputStream();
ObjectInputStream objectInputStream = new
ObjectInputStream(inputStream);
ObjectOutputStream objectOutputStream = new
ObjectOutputStream(outputStream);
while (true)
{
String response;
RpcRequest request =
(RpcRequest)objectInputStream.readObject();
if (request.getMethodNum()==1)
{
HelloService helloService = new HelloServiceImpl();
response = helloService.sayHello(request.getMessage());
}
else if (request.getMethodNum()==2)
{
ByeService helloService = new ByeServiceImpl();
response = helloService.sayBye(request.getMessage());
}
else
{
System.out.println("传入错误");
throw new RuntimeException();
}