- /**
- * tcp通信服务器
- * 多个客户端可以连接一个服务器
- * `要排队执行,一个客户端完成一次通信以后,下一个客户端才能与服务器交互
- * */
- import java.io.*;
- import java.net.*;
- public class ImprovedSimpleServer {
- public static void main(String[] args) throws IOException {
- ServerSocket server = new ServerSocket(5678);
- while (true) {//循环一侦听是否有新的客户端连接
- Socket client = server.accept();
- BufferedReader in = new BufferedReader(new InputStreamReader(client
- .getInputStream()));
- PrintWriter out = new PrintWriter(client.getOutputStream());
- while (true) {//循环二读取客户端的输入
- String str = in.readLine();
- out.println(str);
- out.flush();
- if (str.equals("end"))
- break;
- }
- client.close();
- }
- }
- }
- /**
- * tcp通信服务器
- * 一个客户端只能连接一个服务器
- * */
- import java.io.*;
- import java.net.*;
- public class SimpleServer {
- public static void main(String[] args) throws IOException {
- ServerSocket server = new ServerSocket(5678);// 分配端口,端口号从0~65535,前1024个是保留端口
- Socket client = server.accept();// 产生阻塞,直到接受一个连接请求从客户端读取字符,并原样返回
- BufferedReader in = new BufferedReader(new InputStreamReader(client
- .getInputStream()));// 获得网络输入
- PrintWriter out = new PrintWriter(client.getOutputStream());// 获得网络输出
- while (true) {
- String str = in.readLine();
- out.println(str);
- out.flush();
- if (str.equals("end"))
- break;
- }
- client.close();
- }
- }
- /**
- * tcp通信客户端
- * 一个客户端只能连接一个服务器
- * */
- import java.net.*;
- import java.io.*;
- public class SimpleClient {
- public static void main(String[] args) throws Exception {
- Socket server = new Socket(InetAddress.getLocalHost(), 5678);// 创建与服务器的连接,获取IP地址
- BufferedReader in = new BufferedReader(new InputStreamReader(server
- .getInputStream()));
- PrintWriter out = new PrintWriter(server.getOutputStream());
- BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));// 控制台从键盘输入
- while (true) {
- String str = wt.readLine();
- out.println(str);
- out.flush();
- if (str.equals("end"))
- break;
- System.out.println(in.readLine());
- }
- server.close();
- }
- }