黑马程序员技术交流社区

标题: Socket问题 [打印本页]

作者: 紫幻随影-缪    时间: 2014-4-25 21:24
标题: Socket问题
本帖最后由 紫幻随影-缪 于 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这个类有什么意义吗?求指导!

作者: 世界公民    时间: 2014-4-25 21:43
按我的理解,这样设计是为了增加程序的扩展性,比如当你创建Socket实例时可以用Socket带参数的构造方法:Socket s=new Socket(“192.168.2.3”,23414);但是有时把Socket对象跟Socket所用到的地址分开可以提高程序的扩展性,则有了这种写法,Socket s=new Socket();先创建soket对象,当真正要用socket时再设置它的地址跟端口,也就是SocketAdrress对象。。。这样就大大提高了程序的灵活性。。
作者: 你为谁归来    时间: 2014-4-25 22:22
当你的连接不是固定IP的时候,是有多个活动的IP进行连接你怎么写啊,N个socket吗?肯定是不行的啦。就可以使用socketAddress来进行接受。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2