程序这样编写对不对?
/**
* 需求: 10 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
class Test10 {// TCP服务端
public static void main(String[] args) throws UnknownHostException // 程序主函数。并声明异常类型。
{
Socket socket = null; // 创建socket端口,默认值为null.
try {
while (true)// 循环语句,使服务端保持常开状态。
{
ServerSocket serverSocket = new ServerSocket(8000);// 创建绑定端口8000的对象ServerSocket
socket = serverSocket.accept();// 接收客户端请求,得到Socket
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));// 创建带缓冲的字符读入流
String sr = br.readLine();// 读取一个文本行
PrintStream ps = new PrintStream(socket.getOutputStream());// 此输出流不会抛出异常
ps.println(new StringBuffer(sr).reverse());// 将反转后的字符串打印到客户端屏幕上
}
} catch (IOException e) // 接收异常。
{
e.printStackTrace();// 异常处理方式为详细打印问题信息。
} finally// 最后执行语句。
{
if (socket != null)// 如果端口为空,则执行下面语句。
{
try {
socket.close();// socket端口关闭.
} catch (IOException e)// 抛出异常。
{
e.printStackTrace();// 异常处理方式。
}
}
}
}
}
//TCP客户端
class TCPClient {
public static void main(String[] args)// 程序主函数。
{
Socket socket = null;// 创建Socket端口。默认值为null.
try {
socket = new Socket(InetAddress.getLocalHost(), 8000);// 创建Socket,
// 请求服务端
while (true)// 循环语句。
{
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));// 键盘录入,接受键入字符。
PrintStream ps = new PrintStream(socket.getOutputStream());// 创建一个输出流,用于返回信息。
Scanner scanner = new Scanner(System.in); // 创建Scanner
System.out.println("请输入一个字符串:"); // 给出提示输入
String line = scanner.nextLine(); // 从键盘输入读取一行
ps.println(line); // 发送到服务端
System.out.println(br.readLine()); // 读取服务端发回的字符串, 打印
}
} catch (Exception e)// 接受抛出的异常。
{
e.printStackTrace();// 处理方式,详细打印。
} finally {
if (socket != null)// 判断socket端口是否为空。
{
try {
socket.close();// 端口关闭。
} catch (IOException e)// 如果抛出异常,则接受处理。
{
e.printStackTrace();// 处理方式,详细打印异常。
}
}
}
}
} |