当我在Java中声明时
Socket s = new Socket((String)null, 12345);
这实际上是打开套接字并使用系统和网络资源,还是延迟到我连接输入/输出缓冲区之后?我想在我的程序开始时创建一个Socket
对象,该对象都设置为连接到服务器,并根据需要打开/关闭它,而不是必须传递地址和端口(它似乎更干净),但如果它意味着端口将在整个时间打开,那就不行了。
修改
从答案看来,这不会像我想的那样起作用。如何创建一个已关闭的套接字,该套接字全部使用地址设置,只需要连接?
答案 0 :(得分:3)
http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#Socket(java.net.InetAddress,%20int)< - 它取决于您使用的构造函数。对于您指定的构造函数,它将连接。
答案 1 :(得分:2)
根据http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#Socket(java.lang.String,int) ,初始化对象的方式将被连接。
答案 2 :(得分:0)
对于您的编辑:您必须设置自己的类,其中包含所有设置信息,然后可以稍后打开。也许yüu会将数据存储在那里并创建一个返回套接字的方法。这取决于你,有很多方法可以做到这一点。但要确保最后所有插座都正确关闭;)
答案 3 :(得分:0)
Socket的每个构造函数都创建一个底层套接字,它使用系统资源,除了no-args构造函数之外的所有构造函数都使用网络资源。没有“将输入/输出缓冲器附加到插座”这样的操作。