• java线程之一 单线程


    对java的socket一直很陌生,陌生到别人问我线程通信时,感觉自己无地自容,愧对自己多java的热爱。

    正好最近项目抽风中,看到csdn上有相关资料,就自己写了点demo。希望对刚入门或则尽快掌握socket通信开发

    的朋友有所启发。

    服务端代码

     1 /**
     2  * @author  draem0507@gmail.com
     3  * @TODO    java线程开发之一 单线程
     4  * @version 1.0
     5  * @date 2013-5-7下午09:19:45    
     6  * @blgos myblog:http://www.cnblogs.com/draem0507
     7  */
     8 
     9 public class ServerTest {
    10 
    11     public static void main(String[] args) throws IOException {
    12 
    13         ServerSocket server = new ServerSocket(10000);
    14         Socket socket = server.accept();
    15         BufferedReader in = new BufferedReader(new InputStreamReader(socket
    16                 .getInputStream()));
    17         PrintWriter out = new PrintWriter(socket.getOutputStream());
    18         while (true) {
    19             String msg = in.readLine();
    20             System.out.println("服务端收到的信息:" + msg);
    21             out.println("server receive:" + msg);
    22             out.flush();
    23             if (msg.equals("bye")) {
    24                 break;
    25             }
    26 
    27         }
    28         
    29         socket.close();
    30 
    31     }
    32 
    33 }

    客户端代码

     1 public class ClientTest {
     2     public static void main(String[] args) throws Exception {
     3         Socket socket = new Socket("localhost", 10000);
     4         BufferedReader in = new BufferedReader(new InputStreamReader(socket
     5                 .getInputStream()));
     6         PrintWriter out = new PrintWriter(socket.getOutputStream());
     7         BufferedReader reader = new BufferedReader(new InputStreamReader(
     8                 System.in));
     9 
    10         while (true) {
    11             String msg = reader.readLine();
    12             out.println(msg);
    13             out.flush();
    14             if (msg.equals("bye")) {
    15                 break;
    16             }
    17             System.out.println(in.readLine());
    18         }
    19         socket.close();
    20     }
    21 }

    测试代码的时候,先运行服务端,在运行客户端。

    因为是单线程的,所以没有办法多次运行客户端代码。如果要实现1-n模式,则需要用到多线程模式。

  • 相关阅读:
    按钮-全选复选框 PENGHAO
    ASP.NET技术内幕的电子书中文版 PENGHAO
    hotmail和gmail 邮件中背景图片无效不显示的解决办法
    Silverlight之DataGrid的列格式化日期
    MS SQL基础
    JS获得当前地址栏url
    Javascript实现复制到剪贴板
    C#.NET画验证码与Cookie验证
    网站部署与定制
    操作SQL数据库常用语句
  • 原文地址:https://www.cnblogs.com/draem0507/p/3066387.html
Copyright © 2020-2023  润新知