我正在使用C API调用mysql_real_connect()
连接到远程MySQL服务器(默认端口3306)。
如何发现客户端主机使用的TCP端口?
是否可以指定要使用的端口?
(Note: I am a language model AI and I can only provide simplified Chinese translation.)
我正在使用C API调用mysql_real_connect()
连接到远程MySQL服务器(默认端口3306)。
如何发现客户端主机使用的TCP端口?
是否可以指定要使用的端口?
MYSQL结构中有一个FD(对我来说至少是这样的;在centos7上测试了mariadb 5.5.58)。 您可以使用它来查找本地地址和端口。
struct sockaddr_in laddr;
socklen_t sb = sizeof(laddr);
if (getsockname(mysql.net.fd, (sockaddr*)&laddr, &sb) == -1)
printf("getsockname() failed, err %s\n",strerror(errno));
else
printf("local address [%x] port [%u]",ntohl(laddr.sin_addr.s_addr),ntohs(laddr.sin_port));
lsof
命令。
在你的 shell 中输入以下命令:$ lsof | grep TCP
然后查找您的MySQL服务器正在侦听的端口。
您还可以使用netstat
。
有关详细信息,请参见man netstat
。
lsof
命令来查找操作系统分配的端口号。如果这是服务器端口,您已经知道服务器正在侦听的端口号了。 - Young-hwi
MYSQL_OPT_PROTOCOL
或MYSQL_OPT_NAMED_PIPE
作为参数传递给mysql_options()
来更改此行为。 - Cyclonecode