服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

Udp端口绑定在VMware Linux中

在我的应用程序中,有两台物理计算机,都在Windows环境中。 计算机2(IP为“192.168.2.2”)安装了VMware Linux虚拟机(IP为“192.168.80.129”)。 我想要做的是将UDP套接字从虚拟机发送到计算机1(IP“192.168.2.1”)。 根据我的申请要求,当udp通过虚拟机发送到计算机2时,应指定端口。 现在我的情况是,当我在Linux中创build和configurationudp套接字时,我指定了两个端口LOCAL_PORT(9000)和REMOTE_PORT(9001)。 当我打开WireShark来监视时,在Linux VM中,源端口是LOCAL_PORT(9001),但是目的端口是“iua(9900)”。 源IP是“192.168.80.129”,目的IP是“192.168.2.1”,是正确的。 当我在计算机1或计算机2上的Windows中打开Wireshark时,显示的源IP是“192.168.2.2”,而目标IP是“192.168.2.1”。 这似乎是可以理解的,因为发送者是虚拟机,所以Udp实际上是由主机(计算机2)发送的。 目标端口是正确的,但是,源端口似乎是任意的。 有谁知道我可以做什么在虚拟机,以便源端口可以是数字(9900)作为分配,而不是一个任意数字? 谢谢! int sock1; struct sockaddr_in slAddr, myAddr; memset(&slAddr, 0, sizeof(slAddr)); memset(&myAddr, 0, sizeof(myAddr)); slAddr.sin_family = AF_INET; slAddr.sin_port = htons(RM_PORT);//RM_PORT=9900 slAddr.sin_addr.s_addr = inet_addr(SL_IP);//SL_IP="192.168.2.1" myAddr.sin_family = AF_INET; myAddr.sin_port = htons(LC_PORT);//LC_PORT=9901 myAddr.sin_addr.s_addr = inet_addr(MY_IP);//MY_IP="192.168.80.129" sock1 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); bind(sock1, (struct sockaddr *)&myAddr, sizeof(myAddr)); sendto(sock1, […]