zoukankan      html  css  js  c++  java
  • java Socket和ServerSocket多线程编程

       这是在一本java教材上看到的,做了点修改。具体本教材记不清楚了,Sorry.放在这里,只是让自己需要的时候能够容易找到。

         程序分两部分,服务端和客户端。先把服务端运行起来,在运行客户端。整个过程就是客户端想服务端发送String,服务端再返回。客户端的String由键盘输入得到。

    服务器端。

    Java代码  收藏代码
    1. package net.tcp;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.IOException;  
    5. import java.io.InputStreamReader;  
    6. import java.io.PrintWriter;  
    7. import java.net.ServerSocket;  
    8. import java.net.Socket;  
    9.   
    10. public class Server extends Thread  
    11. {  
    12.   
    13.     ServerSocket server = null;  
    14.     Socket sk = null;  
    15.     BufferedReader rdr = null;  
    16.     PrintWriter wtr = null;  
    17.   
    18.     public Server()  
    19.     {  
    20.         try  
    21.         {  
    22.             server = new ServerSocket(1987);  
    23.         }  
    24.         catch (IOException e)  
    25.         {  
    26.             e.printStackTrace();  
    27.         }  
    28.     }  
    29.   
    30.     public void run()  
    31.     {  
    32.   
    33.         while (true)  
    34.             {  
    35.                 System.out.println("Listenning...");  
    36.                 try  
    37.                 {  
    38. //                  每个请求交给一个线程去处理  
    39.                     sk = server.accept();  
    40.                     ServerThread th = new ServerThread(sk);  
    41.                     th.start();  
    42.                     sleep(1000);  
    43.                 }  
    44.                 catch (Exception e)  
    45.                 {  
    46.                     e.printStackTrace();  
    47.                 }  
    48.                   
    49.             }  
    50.     }  
    51.   
    52.     public static void main(String [] args)  
    53.     {  
    54.         new Server().start();  
    55.     }  
    56.   
    57.       
    58.       
    59.       
    60.       
    61.       
    62.     class ServerThread extends Thread  
    63.     {  
    64.   
    65.         Socket sk = null;  
    66.         public ServerThread(Socket sk)  
    67.         {  
    68.             this.sk = sk;  
    69.         }  
    70.         public void run()  
    71.         {  
    72.             try  
    73.             {  
    74.                 wtr = new PrintWriter(sk.getOutputStream());  
    75.                 rdr = new BufferedReader(new InputStreamReader(sk  
    76.                         .getInputStream()));  
    77.                 String line = rdr.readLine();  
    78.                 System.out.println("从客户端来的信息:" + line);  
    79. //              特别,下面这句得加上     “ ”,  
    80.                 wtr.println("你好,服务器已经收到您的信息!'" + line + "' ");  
    81.                 wtr.flush();  
    82.                 System.out.println("已经返回给客户端!");  
    83.             }  
    84.             catch (IOException e)  
    85.             {  
    86.                 e.printStackTrace();  
    87.             }  
    88.               
    89.         }  
    90.           
    91.     }  
    92.   
    93. }  



    客户端:

    Java代码  收藏代码
    1. package net.tcp;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.BufferedWriter;  
    5. import java.io.InputStreamReader;  
    6. import java.io.OutputStreamWriter;  
    7. import java.io.PrintWriter;  
    8. import java.net.Socket;  
    9.   
    10. public class Client extends Thread  
    11. {  
    12.   
    13.     Socket sk = null;  
    14.     BufferedReader reader = null;  
    15.     PrintWriter wtr = null;  
    16.     BufferedReader keyin = null;  
    17.   
    18.     public Client()  
    19.     {  
    20.         keyin = new BufferedReader(new InputStreamReader(System.in));  
    21.         try  
    22.         {  
    23.             sk = new Socket("127.0.0.1", 1987);  
    24.         }  
    25.         catch (Exception e)  
    26.         {  
    27.             e.printStackTrace();  
    28.         }  
    29.   
    30.     }  
    31.   
    32.     public void run()  
    33.     {  
    34.         try  
    35.         {  
    36.             reader = new BufferedReader(new InputStreamReader(sk  
    37.                     .getInputStream()));  
    38.             wtr = new PrintWriter(sk.getOutputStream());  
    39.             String get = keyin.readLine();  
    40.   
    41.             while (true)  
    42.             {  
    43.                 if (get != null & get.length() > 0)  
    44.                 {  
    45.                     wtr.println(get);  
    46.                     wtr.flush();  
    47. //                  wtr.close();  
    48. //                  System.out.println(get + "发送完毕");  
    49.                 }  
    50.                 if (reader != null)  
    51.                 {  
    52.                     String line = reader.readLine();  
    53.                     System.out.println("从服务器来的信息:" + line);  
    54.                       
    55.                 }  
    56.                   
    57.             }  
    58.         }  
    59.         catch (Exception e)  
    60.         {  
    61.             e.printStackTrace();  
    62.         }  
    63.     }  
    64.   
    65.     public static void main(String [] args)  
    66.     {  
    67.         new Client().start();  
    68.     }  
    69. }  
    分享到:
  • 相关阅读:
    VSFTP日志文件详解
    RocketMQ多master多salve集群搭建
    数据持久化之bind Mounting
    数据持久化之Data Volume
    gitLab 分支保护设置
    docker容器的端口映射
    docker命令之link
    NFS客户端挂载失败之authenticated unmount request from
    docke网络之bridge、host、none
    docke通信之Linux 网络命名空间
  • 原文地址:https://www.cnblogs.com/sddychj/p/6102192.html
Copyright © 2011-2022 走看看