Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中延迟初始化套接字?_Java_Sockets_Network Programming - Fatal编程技术网

如何在java中延迟初始化套接字?

如何在java中延迟初始化套接字?,java,sockets,network-programming,Java,Sockets,Network Programming,现在,我必须将soc句柄传递给一个函数,该函数使用ServerSocket的适当IP地址和端口号初始化套接字。我怎么做? 我试过: 但是,lambda必须有soc才能最终确定。所以,我能看到的唯一选择是在函数中延迟初始化套接字句柄 你不能。 唯一的方法是将其转换为最终数组,如下所示: Socket soc; //then a lambda which initializes like this : soc = new Socket("ip", port_no); 与使用获取端点详细信息并尝试立

现在,我必须将soc句柄传递给一个函数,该函数使用ServerSocket的适当IP地址和端口号初始化套接字。我怎么做? 我试过:

但是,lambda必须有soc才能最终确定。所以,我能看到的唯一选择是在函数中延迟初始化套接字句柄

你不能。 唯一的方法是将其转换为最终数组,如下所示:

Socket soc;
//then a lambda which initializes like this :
soc = new Socket("ip", port_no);

与使用获取端点详细信息并尝试立即连接的构造函数不同,您始终可以创建一个未连接的套接字并在以后连接它,无论是在另一个方法中还是在lambda中

final Socket[] soc = {null};

    new Thread(() -> {
        soc[0] = new Socket("ip", port_no);
    });

你在问什么?如果你真的想,你可以创建你的新套接字,并在方法内部连接。我试过了。它需要一个SocketAddress实例。我继续直接创建它的对象,但它是抽象的。那么,我应该如何继续?如何使用connect?你可以找一个供应商来做这件事,但这并没有什么用处。他只是问如何初始化定义为lambda表达式的socketalready,所以我回答说我可以看到。这里的人并不总是真正知道如何解释自己,所以他们会问一些毫无意义的问题。这个答案虽然在技术上是正确的,但毫无用处。
final Socket[] soc = {null};

    new Thread(() -> {
        soc[0] = new Socket("ip", port_no);
    });
Socket sock = new Socket();
doSomething(sock);
...
public void doSomething(Socket sock) {
    sock.connect(new InetSocketAddress("foo.com", 6667));
}