独步喜欢 2019-11-23 00:14 采纳率: 0%
浏览 485
已结题

通过ubuntu写的udp服务器运行在VM的虚拟机上,然后windos用Netassist却无法发送数据过去,请问是为何啊?

#include
#include
#include
#include
#include
#include
#include
#include

#define SERV_PORT 5588

int main(int argc, char **argv)
{

int sock_fd;
char rcv_buff[512];
struct sockaddr_in client_addr;
struct sockaddr_in server_addr;
int client_len;
int rcv_num = -1;

if ((sock_fd = socket(AF_INET, SOCK_DGRAM,0)) < 0)
{
    perror("socket create error\n");
    exit(1);
}

memset(&server_addr,0,sizeof(struct sockaddr_in));

server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERV_PORT);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

client_len = sizeof(struct sockaddr_in);

if (bind(sock_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) < 0)
{
    perror("bind error.\n");
    exit(1);
}

while (1)
{
    rcv_num= recvfrom(sock_fd, rcv_buff, sizeof(rcv_buff), 0, (struct sockaddr*)&client_addr, &client_len);
    if (rcv_num>0)
    {
        rcv_buff[rcv_num] = '\0';
        printf("%s %u says: %s\n",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port),rcv_buff);

    }
    else
    {
        perror("recv error\n");
        break;
    }
}
close(sock_fd);
return 0;

}
图片说明图片说明

麻烦大手帮忙看看代码是有什么问题还是设置上?防火墙那些都已经关闭了

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-23 09:54
    关注

    关闭虚拟机的防火墙,然后两边相互ping,看看能不能连通。
    如果单方能连通,检查是不是在一个网段(用bridge模式而不是NAT模式)
    都不通,检查虚拟机的网络的设置,ip用动态分配。
    如果能连上了,检查你的程序,ip端口是不是正确。

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程