随笔分类 - JAVA-socket
摘要:NIO是相对于IO来说的。因为NIO=new IO。从JDK1.4版本以后引进来的。可以说NIO是对IO的补充,NIO是对IO的进一步封装,解决了原本IO自身堵塞的问题(虽然可以通过线程来解决,但是占用了大量的CPU资源)简单来说,NIO有缓存Buffer对象,通过Channel来存储和读写Buffer。提供了Charset对象来实现Unicode与其他字符间的转换,最后通过Selector来完成非堵塞开发。关于NIO与IO区别 可以参考以下文章http://www.dewen.org/q/9648http://tutorials.jenkov.com/java-nio/nio-vs-io.h
阅读全文
摘要:网络传输是存在风险的,因此对服服务端和客户端进行安全校验和传输信息的加密就显得非常的重要。上面一句有点拗口,简单解释如下文: 当客户使用SSL向站点服务器发送请求时,服务器向客户端发送一个证书,客户使用已安装的证书,验证服务器身份,然后检查IP地址(主机名)与客户端连接的主机是否匹配。客户生成可以用来对话的私钥(称为会话密钥),然后用服务者的公钥对它进行加密并将它发送到服务者。服务者用自己的私钥解密,然后用该信息和客户端一样的私有会话密钥。通常在这个阶段使用RSA算法。随后,客户端和服务器端使用私有会话密钥和私钥算法(通常是RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。接下来
阅读全文
摘要:之前例子中已经介绍了如何使用socket进行信息的传输,及其如何进行多客户端的通信。但是实际开发中,我们不可能只传输简单的基础类型的数据。更多的是要传输一个对象,或则信息包。因此今天的场合要用到ObjectInputStream/ObjectOutputStream对象。要传输对象,我们首先定义一个对象类User 1 public class User implements Serializable{ 2 3 4 /** 5 * java.io.InvalidClassException: com.lwx.bean.User; local class in...
阅读全文
摘要:单线程开发模式中。如果一个客户端没有与客户端断开连接,则其他的客户端就必须一直等待。多线程则允许多个客户端同时连接服务端,而不需要等待其他客户端断开后才可以连接,也就是通常所说的非阻塞通信。服务端 1 /** 2 * @author draem0507@gmail.com 3 * @TODO java线程开发之二 多线程 4 * @version 1.0 5 * @date 2013-5-7下午09:19:45 6 * @blgos http://www.cnblogs.com/draem0507 7 */ 8 9 10 class ServerTest {11...
阅读全文
摘要:对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 *...
阅读全文