实现目标:创建一个简单的服务器,可以将客户机发来的消息显示出来,之后再返回给客户机。
①使用java创建一个服务器的指令非常简单,就是在指定窗口上创建一个java.net.ServerSocket对象。
代码如下:
private ServerSocket server; public void setUpServer(int port) { try { //创建服务器 server = new ServerSocket(port); System.out.println("已创建服务器" + port); } catch (IOException e) { e.printStackTrace(); } }
②服务器创建之后就相当于进入了待机状态,等待其他的客户机来连接
// 让服务器进入等待状态
Socket client = server.accept();
需要注意的是:在调用 server.accept()方法时,程序就会“阻塞”在这里——直到有一个客户机连接上来,这个方法才会返回一个 Socket 类的对象来代表服务器与客户机之间的连接
③要接受客户机发来的消息并返回给客户机,就必须创建输入输出流对象。
向输入流中写入的数据,就被发向了客户机;从输出流对象中读取数据,读到的就是客户机发来的数据;
// 从连接对象上获取输入输出流对象 OutputStream out =client.getOutputStream(); InputStream in = client.getInputStream(); out.write("欢迎来到聊天室\r\n".getBytes()); out.write("输入quit退出\r\n".getBytes());
④使用输入输出流进行对数据的读写操作,在这里实现了一次读取一行字符串的功能,直至按下回车输出;
String s = new String(); while (true) { char ch = (char) in.read(); System.out.println(); System.out.print("用户输入:" + ch); if (ch == '\n') { out.write(("服务器收到:\r" + s).getBytes()); out.write("\r\n".getBytes()); s = new String(); } s = s + ch; if (s.contains("quit")) { break; } } out.flush(); out.close();