📄 singleserver.java.bak
字号:
import java.io.*;
import java.net.*;
/**类SingleServer是单客户机制的服务器端程序*/
public class SingleServer{
public static void main(String args[]){
/**由于ServerSocket的生成和关闭都有可能产生错误,因此需要进行例外处理*/
try{
/**声明一个ServerSocket对象,初始值为null*/
ServerSocket serverObj = null;
try{
/*生成serverSocket对象,该对象负责监听端口4700*/
serverObj = new ServerSocket(4700);
}catch(Exception e){
System.out.println("对不起,不能监听端口:"+e);
}
/**生成一个Socket对象,初始值为null*/
Socket clientObj = null;
try{
/*将Socket和ServerSocket连接起来*/
clientObj = serverObj.accept();
}catch(Exception e){
System.out.println("错误:"+e);
}
/*声明一个字符串变量,用于存放读取的一行数据*/
String lineStr;
/*根据socket对象获得的输入流生成InputStreamReader类的对象streamObj1*/
InputStreamReader streamObj1 = new InputStreamReader(clientObj.getInputStream());
/*根据streamObj1生成BufferedReader类的对象buffObj1,以提高数据读取效率*/
BufferedReader buffObj1 = new BufferedReader(streamObj1);
/*通过socket对象的getOutputStream()方法获得的OutputStream对象创建PrintWriter类的对象*/
PrintWriter outObj = new PrintWriter(clientObj.getOutputStream());
/*生成一个InputStreamReader对象,对应服务器端键盘的输入*/
InputStreamReader streamObj2 = new InputStreamReader(System.in);
/*根据上面的streamObj2输入流创建BufferedReader类的对象,以提高数据读取效率*/
BufferedReader buffObj2 = new BufferedReader(streamObj2);
/*在服务器方输出客户端输入的一行字符串信息*/
System.out.println("Client:"+buffObj1.readLine());
/*读取服务器端键盘输入的数据,放在字符串lineStr中*/
lineStr = buffObj2.readLine();
/*判断服务器端输入的字符串是不是“end”,如果不是就进行循环*/
while(!lineStr.equals("end"))
{
/*将服务器端输入的字符串通过socket在客户端输出*/
outObj.println(lineStr);
/*在客户端强制输出服务器端输入的字符串*/
outObj.flush();
/*在服务器端输出自己这端键盘输入的字符串*/
System.out.println("Server:"+lineStr);
/*在服务器端输出客户端输入的信息*/
System.out.println("Client:"+buffObj1.readLine());
/*将服务器端键盘输入的信息放在字符串变量lineStr中*/
lineStr = buffObj2.readLine();
}
/*关闭socket的输入流*/
buffObj1.close();
/*关闭socket的输出流*/
outObj.close();
/*关闭socket*/
clientObj.close();
/*关闭ServerSocket*/
serverObj.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -