标签: inet-socket

在Java中找到免费端口

我需要在Java应用程序中找到一个自由端口.为什么以下代码不起作用?它总是返回0.

public int findFreePort() {
    int portNumber = new InetSocketAddress(0).getPort();
    return portNumber;
}
Run Code Online (Sandbox Code Playgroud)

Java doc new InetSocketAddress()说:

创建一个套接字地址,其中IP地址是通配符地址,端口号是指定值.

有效端口值介于0和65535之间.端口号为零将使系统在绑定操作中获取临时端口.

java port javadoc ip-address inet-socket

7
推荐指数
1
解决办法
1429
查看次数

BSD套接字问题:inet_ntop返回"0.0.0.0"

我正试图让机器的IP成为我一直在聆听的套接字.打印的端口号工作正常,但地址为"0.0.0.0".这是相关的代码.res已经传递到此代码之前getaddrinfogetsockname之前.

char ip[INET_ADDRSTRLEN];
struct sockaddr_in *ipv4 = (struct sockaddr_in *)res->ai_addr;
void* addr = &(ipv4->sin_addr);

inet_ntop(res->ai_family, addr, ip, sizeof ip);

std::cout << "SERVER_ADDRESS " << ip << std::endl;
std::cout << "SERVER_PORT " << ipv4->sin_port << std::endl;
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?

c c++ sockets inet-socket

4
推荐指数
1
解决办法
1317
查看次数

如何将本地unix套接字映射到inet套接字?

我很好奇是否可以将UNIX套接字映射到INET套接字.情况很简单,我想连接到MySQL服务器.不幸的是它禁用了INET套接字,因此我只能连接UNIX套接字.我正在使用/写入的工具必须连接在INET套接字上,所以我试图看看是否可以将一个映射到另一个.

这需要相当多的搜索,但我确实找到了socat,据说它正在寻找我正在寻找的东西.我想知道是否有人对如何实现这一点有任何建议.我一直在使用的命令行(部分成功)是:

socat -v UNIX-CONNECT:/var/lib/mysql/mysql.sock TCP-LISTEN:6666,reuseaddr
Run Code Online (Sandbox Code Playgroud)

现在我可以建立连接并与服务器通信.不幸的是,任何尝试进行多个连接都会失败,因为我需要使用fork选项,但是这个选项似乎使连接无法正常运行.

我知道我可以用Perl(我的首选语言)来解决这个问题,但我宁愿避免自己编写整个实现.我熟悉IO :: Socket库,我只是希望有人有这方面的经验.对建议/想法持开放态度.

谢谢.

mysql perl socat unix-socket inet-socket

2
推荐指数
1
解决办法
3229
查看次数

标签 统计

inet-socket ×3

c ×1

c++ ×1

ip-address ×1

java ×1

javadoc ×1

mysql ×1

perl ×1

port ×1

socat ×1

sockets ×1

unix-socket ×1