小编Sun*_*nal的帖子

使用相同的TCP端口进行接受和连接

在评论正确使用SO_REUSEADDR后编辑

我想在java中为入站和出站连接使用相同的端口

目的是在分布式环境中创建节点.但在Tcp中,我需要使用两个不同的端口来接受和启动连接.

// accept incoming connection on one port
ServerSocket.accept()
// connect to remote, the port used will be different from the one used for accepting
Socket.connect()
Run Code Online (Sandbox Code Playgroud)

现在的问题是:

  • A开始收听端口a.B上的B和c上的C.
  • 当A连接B(使用Socket.connect())时,A和B将保持套接字打开以便将来传递消息.
  • B仍然不知道端口A正在侦听,因为b接收连接的端口不同于a.
  • 当C连接B时,B给出A到C的套接字地址,但该端口是由Socket()没有accept()方法的实例绑定的

当然,A可以通知B关于它正在收听的端口,但是没有直接的方法吗?

我怎样才能通过这个测试?

import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class DualSocketTest {
    ExecutorService service= Executors.newFixedThreadPool(10);
    int echoServerport=8080;
    int localServerport=8090;

    @Test
    public void testConnectivity() throws IOException {
        // create a …
Run Code Online (Sandbox Code Playgroud)

java sockets tcp ip-address

6
推荐指数
1
解决办法
232
查看次数

标签 统计

ip-address ×1

java ×1

sockets ×1

tcp ×1