java--基于socket的网络传输开发

发布时间:2016-12-11 14:24:41 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java--基于socket的网络传输开发",主要涉及到java--基于socket的网络传输开发方面的内容,对于java--基于socket的网络传输开发感兴趣的同学可以参考一下。

继http://blog.csdn.net/gaopeng0071/article/details/10959845此文章内容展开的研究。   socket传输是基于tcp的网络传输协议进行的传输,tcp有一个特点,举个例子(视频上学的): 比如张三给李四打电话,张三拨通李四的电话号,李四接起了电话,这是张三说了一声你好,然后张三就一直等待李四的回复,如果李四不回复,那么张三那就这么一直等下去... socket也是这样,只要server端没给client端一个回复那么后面的请求都一直等待,用法就是Socket socket = accept(); socket会根据server端是否为阻塞状态来判断是否可以进行下一个请求的传输。   所以为了解决这种问题,在server端或client端,请求数据的处理都单独开启一个线程进行处理。 代码如下: try { while (true) { Socket socket = accept(); // 阻塞 new CreateServerThread(socket); } } finally { close(); } 第二行代码,是一个死循环。 第四行,是将线程通道变为阻塞的状态。 第五行,实例化一个类,此类继承Thread,在类中执行start方法。 CreateServerThread类,详见下面代码 public CreateServerThread(Socket s) throws IOException { client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream()));// 获取socket的输入流 out = new PrintWriter(client.getOutputStream(), true);// 获取到socket的输出流 out.println("--- Welcome to this chatroom ---"); out.println("Input your nickname:"); start(); } 此类获取了socket的输入输出流后,开启线程处理后续工作。这样下一个请求即可快速进行,然后依次往返开启多线程来并行处理请求。   我理解的socket通信模式如下图:

上一篇:PJSIP学习笔记——PJSUA层发起呼叫的主要流程
下一篇:【ios实例小计】NSTimer 定时器的使用

相关文章

相关评论