【java】网络socket编程简单示例

 1 package 网络编程;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintStream;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 
 8 public class TestServerSocket {
 9     public static void main(String[] args) throws IOException {
10         ServerSocket server=new ServerSocket(9999);
11         System.out.println("正在连接中……");
12         Socket client=server.accept();
13         PrintStream out=new PrintStream(client.getOutputStream());
14         out.println("北京欢迎你。");
15         out.close();
16         client.close();
17         server.close();
18     }
19 }
Server
 1 package 网络编程;
 2 
 3 import java.io.IOException;
 4 import java.net.Socket;
 5 import java.net.UnknownHostException;
 6 import java.util.Scanner;
 7 
 8 public class TestSocket {
 9     public static void main(String[] args) throws UnknownHostException, IOException {
10         Socket client=new Socket("localhost",9999);
11         Scanner scan=new Scanner(client.getInputStream());
12         scan.useDelimiter("
");
13         if(scan.hasNext())
14             System.out.println("响应数据:"+scan.next());
15         scan.close();
16         client.close();
17     }
18 }
Client

echo模型:

 1 package 网络编程;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintStream;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 import java.util.Scanner;
 8 
 9 public class TestEchoServer {
10     public static void main(String[] args) throws IOException {
11         ServerSocket server = new ServerSocket(9999);
12         Socket client = server.accept();
13         Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
14         PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
15         boolean flag = true;
16         String tmp = "";
17         while (flag) {
18             if (scan.hasNext()) {
19                 tmp = scan.next().trim();
20                 if (tmp.equalsIgnoreCase("bye")) {
21                     out.println("再见!");
22                     flag = false;
23                 } else {
24                     out.println("Echo:" + tmp);
25                 }
26             }
27         }
28         out.close();
29         scan.close();
30         client.close();
31         server.close();
32     }
33 }
EchoServer
 1 package 网络编程;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintStream;
 5 import java.net.Socket;
 6 import java.net.UnknownHostException;
 7 import java.util.Scanner;
 8 
 9 public class TestEchoClient {
10     public static void main(String[] args) throws UnknownHostException, IOException {
11         Socket client=new Socket("localhost",9999);
12         Scanner scan=new Scanner(System.in);//键盘输入
13         Scanner in=new Scanner(client.getInputStream());//服务端输入
14         PrintStream out=new PrintStream(client.getOutputStream());//输出到服务端
15         scan.useDelimiter("
");
16 //        in.useDelimiter("
");
17         boolean flag=true;
18         String msg="";
19         while(flag){
20             if(scan.hasNext()){//等待用户从键盘输入
21                 msg=scan.next().trim();
22                 out.println(msg);//信息转给服务端
23                 if(msg.equalsIgnoreCase("bye"))
24                     flag=false;
25                 else
26                     System.out.println(in.next());//打印服务端响应的信息
27             }
28         }
29         out.close();
30         in.close();
31         scan.close();
32         client.close();
33     }
34 }
EchoClient
 1 package 网络编程;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintStream;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 import java.util.Scanner;
 8 
 9 class ClientThread implements Runnable {
10     private Socket client;
11 
12     public ClientThread(Socket client) {
13         this.client = client;
14     }
15 
16     @Override
17     public void run() {
18         try {
19             Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
20             PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
21             boolean flag = true;
22             String tmp = "";
23             while (flag) {
24                 if (scan.hasNext()) {
25                     tmp = scan.next().trim();
26                     if (tmp.equalsIgnoreCase("bye")) {
27                         out.println("再见!");
28                         flag = false;
29                     } else {
30                         out.println("Echo:" + tmp);
31                     }
32                 }
33             }
34             out.close();
35             scan.close();
36             client.close();
37         } catch (Exception e) {
38             e.printStackTrace();
39         }
40     }
41 }
42 
43 public class TestEchoServer {
44     public static void main(String[] args) throws IOException {
45         ServerSocket server = new ServerSocket(9999);
46         boolean flag = true;
47         while (flag) {
48             Socket client = server.accept();//连接多个客户端
49             new Thread(new ClientThread(client)).start();//每连接一个客户端启动一个线程
50         }
51         server.close();
52     }
53 }
EchoServer多线程
原文地址:https://www.cnblogs.com/xiongjiawei/p/6686176.html