A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫幻随影-缪 中级黑马   /  2014-4-25 21:24  /  961 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 紫幻随影-缪 于 2014-4-28 22:32 编辑

今天看毕老师的的关于Socket网络编程的视频时遇到一个问题:
当客户端的new一个Socket时如果参数为空的话(如:Socket s=new Socket();)
则要多写:SocketAdrress socketAddress=new InetSocketAddress(“192.168.2.3”,23414);
                 s.connect(socketAddress);
我知道SocketAddress是一个抽象类,InetSocketAddress是其的实现类,再通过connet方法进行连接,从而达到
Socket s=new Socket(“192.168.2.3”,23414);的效果。
那么我就想问了,这样不是反而更加复杂化了,SocketAddress这个类有什么意义吗?求指导!

2 个回复

倒序浏览
按我的理解,这样设计是为了增加程序的扩展性,比如当你创建Socket实例时可以用Socket带参数的构造方法:Socket s=new Socket(“192.168.2.3”,23414);但是有时把Socket对象跟Socket所用到的地址分开可以提高程序的扩展性,则有了这种写法,Socket s=new Socket();先创建soket对象,当真正要用socket时再设置它的地址跟端口,也就是SocketAdrress对象。。。这样就大大提高了程序的灵活性。。
回复 使用道具 举报
当你的连接不是固定IP的时候,是有多个活动的IP进行连接你怎么写啊,N个socket吗?肯定是不行的啦。就可以使用socketAddress来进行接受。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马