tcp服务器代码如下:
import java.net.*;
public class ReserveServer {
public static void main(String[] args) { // 用户可自行指定端口号
try {
ServerSocket ss;
if (args.length < 1) {
ss = new ServerSocket(8888);
} else {
ss = new ServerSocket(Integer.parseInt(args[0]));
}
while (true) {
Socket s = ss.accept();
new Thread(new Servicer(s)).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Servicer类如下:
import java.net.*;
import java.io.*;
public class Servicer implements Runnable {
private Socket s;
public Servicer(Socket s) {
this.s = s;
}
public void run() {
try {
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(is));
PrintWriter printWriter = new PrintWriter(os, true);
while (true) {
String info = bufReader.readLine();
if (info.equalsIgnoreCase("quit")) {
break;
}
String result = new StringBuffer(info).reverse().toString();
printWriter.println(info + " --> " + result);
}
bufReader.close();
printWriter.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端代码如下:
import java.net.*;
import java.io.*;
public class TcpClient {
public static void main(String[] args) {
if (args.length < 2) {
printUsage();
}
try {
Socket s = new Socket(args[0], Integer.parseInt(args[1]));
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedReader bufNet = new BufferedReader(new InputStreamReader(is));
PrintWriter prtWriter = new PrintWriter(os, true);
BufferedReader bufKeyBoard = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String input = bufKeyBoard.readLine();
prtWriter.println(input);
if (input.equalsIgnoreCase("quit")) {
break;
}
System.out.println(bufNet.readLine());
}
prtWriter.close();
bufNet.close();
bufKeyBoard.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void printUsage() {
System.out.println("Usage : java TcpClient ServerIP ServerPort");
}
}