最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写。

/**
 * Created by LiuHuiChao on 2016/11/15.
 * description:based on TCP/IP+BIO to deliver the message
 */
public class TCP_IP_BIO {

    /**
     * client端
     * @throws IOException
     */
    @Test
    public void startClient() throws IOException {
        Socket socket =new Socket("127.0.0.1",8888);
        /**创建读取服务器端返回流的BufferedReader*/
        BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        /**创建向服务器写入流的PrintWriter*/
        PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
        /**向服务器发送字符串信息,此处即使写失败,也不会抛出异常信息,并且一直阻塞到写入操作系统或网络IO出现异常*/
        out.println("chifanla");
        /**阻塞读取服务端的返回信息,一下代码会阻塞到服务端返回信息或者网络IO出现异常,如果希望在超时一段时间就不阻塞了,那么久需要在创建socket之后,调用setTimeOut*/
        //in.readLine();
    }

    /**
     * 服务端
     * @throws IOException
     */
    @Test
    public void startServer() throws IOException {
        /**创建对本地指定端口的监听,如果端口冲突,则抛出SocketException;其他网络IO异常抛出IOException*/
        ServerSocket serverSocket=new ServerSocket(8888);
        /**接受客户端简历的连接请求,并且返回一个Socket对象,以便与客户端进行交互;*/
        Socket socket=serverSocket.accept();
        byte[] read=new byte[128];
        socket.getInputStream().read(read,0,128);
        System.out.println(read.toString());

    }
}

最新文章

  1. ★Kali信息收集~ 1.Google Hacking + Github Hacking
  2. memcache服务器端及PHP memcache扩展的安装(转载)
  3. Oracle学习笔记(1)----忘记用户名的密码该如何找回
  4. linux故障判断
  5. 把ISO文件加载到虚拟光驱
  6. POJ - 2183 Bovine Math Geniuses
  7. iOS 获得指定文件夹下的指定格式文件
  8. 深入ThreadLocal之二
  9. STM32F4_TIM输入波形捕获(脉冲频率)
  10. [shell基础]——tr命令
  11. iOS开发--验证码
  12. 【数据结构与算法分析——C语言描述】第一章总结 引论
  13. cocos2dx 帧动画(iOS)
  14. What is SignalR and Why Should I Use It?
  15. File对象的常用方法
  16. Qt控件窗体区域区分
  17. 【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器
  18. Redis缓存机制一为什么要用Redis
  19. 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
  20. php ajax bootstrap多文件上传图片预览,ajax上传文件

热门文章

  1. mysql-5.5 for linux源代码安装
  2. BZOJ1499:[NOI2005]瑰丽华尔兹(DP,单调队列)
  3. 【[SDOI2013]泉】
  4. 随手练——POJ - 2676 数独 (回溯法)
  5. browserify文件后函数调用报is not defined的原因
  6. robotframwork接口测试(四)—其他库的安装
  7. JDK(七)JDK1.8源码分析【集合】TreeMap
  8. RSA加密算法和签名算法
  9. Spring Cloud Sleuth 之Greenwich版本全攻略
  10. jdk1.8换成1.7