用JAVA写一个服务程序,监听一个TCP端口,接受请求,进行处理并给出响应
如何接受请求的方式随意
如何给出响应的方式随意
服务的逻辑随意
具体实现可简可繁,省略的东西相对明确的说明一下
请有注释说明相关的算法和思路
如何接受请求的方式随意
如何给出响应的方式随意
服务的逻辑随意
具体实现可简可繁,省略的东西相对明确的说明一下
请有注释说明相关的算法和思路
调试欢乐多
==================================================
import java.net.*;
import java.io.*;/**
*
* 服务器端程序:
*
* 1. 监听一端口,等待客户接入;
* 2. 一旦有客户接入,就构造一个Socket会话对象;
* 3. 将这个会话交给线程处理,然后主程序继续监听。
*
* @author OKJohn
* @version 1.0
*/public class Server extends ServerSocket { public Server(int serverPort) throws IOException {
//用指定的端口构造一个ServerSocket
super(serverPort);
try {
while (true) {
//监听一端口,等待客户接入
Socket socket = accept();
//将会话交给线程处理
new ServerThread(socket);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
close(); //关闭监听端口
}
} // inner-class ServerThread
class ServerThread extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out; // Ready to conversation
public ServerThread(Socket s) throws IOException {
this.socket = s;
// 构造该会话中的输入输出流
in = new BufferedReader(new InputStreamReader(
socket.getInputStream(), "GB2312"));
out = new PrintWriter(socket.getOutputStream(), true);
start();
} // Execute conversation
public void run() {
try { // Communicate with client until "bye" received.
while (true) {
// 通过输入流接收客户端信息
String line = in.readLine();
if ("bye".equals(line)) { // 是否终止会话
break;
}
System.out.println("Received message:" + line);
String msg = "'" + line + "'has been accepted by server.";
// 通过输出流向客户端发送信息
out.println(msg);
out.flush();
} out.close();
in.close();
socket.close(); } catch (IOException e) {
e.printStackTrace();
}
} } // main method
public static void main(String[] args) throws IOException {
new Server(2000);
}
}Client.java
================================================
import java.net.*;
import java.io.*;/**
*
* 客户端程序
*
* @author OKJohn
* @version 1.0
*/public class Client { private Socket socket;
private BufferedReader reader;
private PrintWriter writer; public Client(int serverPort) {
try { // 向指定服务器(IP、端口)发出请求
socket = new Socket("127.0.0.1", serverPort); // 用得到的会话对象构造输入输出流
reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream()); // Communicate with server until "bye" input.
while (true) {
// 接受统标准输入(键盘)输入的信息
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
String message = in.readLine();
// 将信息通过输出流发送给服务器
writer.println(message);
writer.flush();
// 是否终止会话
if ("bye".equals(message)) {
break;
}
// 通过输入流接收服务器信息
String received = reader.readLine();
System.out.println(received);
} writer.close();
reader.close();
socket.close(); } catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} public static void main(String[] args) {
new Client(2000);
}
}