• 【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多线程
  • 相关阅读:
    DIV3E 基环树
    Codeforces Round #663 (Div. 2) D.505
    统计2进制中1的数量
    bitset 用法笔记
    扩展欧几里得
    KM算法(二分图最大权匹配)
    C1. Errich-Tac-Toe (Easy Version) 米奇妙妙屋
    求逆元
    python——标识符及其命名规则
    python基础——python对象概述
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6686176.html
Copyright © 2020-2023  润新知