实现目标:创建一个简单的服务器,可以将客户机发来的消息显示出来,之后再返回给客户机。
①使用java创建一个服务器的指令非常简单,就是在指定窗口上创建一个java.net.ServerSocket对象。代码如下:
private ServerSocketserver;
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("欢迎来到聊天室rn".getBytes());
out.write("输入quit退出rn".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("rn".getBytes());
s =new String();
}
s = s + ch;
if (s.contains("quit")) {
break;
}
}
out.flush();
out.close();
⑤使用telnet来测试创建的服务器