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