使用交换机相连的两台主机如何使用任意IP地址进行通信?

本文介绍了两台通过交换机连接的主机如何使用非默认IP地址进行UDP通信。在初始配置下,主机无法接收源IP被修改的数据包。通过分析发现,数据包实际上已到达目标主机,但未被正确处理。解决方法是修改主机的默认路由设置,确保数据包通过正确的网卡转发,最终实现了不同IP地址间的通信。
摘要由CSDN通过智能技术生成

    我们有两台主机ucs1和ucs2通过一台交换机相连,且这两台主机与交换机相连的网卡都是eno6。我们将ucs1.eno6的IP地址设为10.0.0.10,将ucs2.eno6的IP地址设为10.0.0.11,如下图所示:

此时我们可以在它们之间实现通信,如下:

此外,我们在ucs2上有一个C程序用于接收UDP数据包,其代码如下:

// server.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define CTRL_PORT 8082
#define MAXLINE 1024

int main() {
    int sockfd;
    char buffer[MAXLINE];
    struct sockaddr_in servaddr, cliaddr;

    // Creating socket file descriptor
    if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
        perror("socket creation failed");
        exit(EXIT_FAILURE);
    }

    memset(&servaddr, 0, sizeof(servaddr));
    memset(&cliaddr, 0, sizeof(cliaddr));

    // Filling server information
    servaddr.sin_family    = AF_INET; // IPv4
    //    servaddr.sin_addr.s_addr = INADDR_ANY;
    servaddr.sin_addr.s_addr = inet_addr("10.0.0.11");
    servaddr.sin_port = htons(CTRL_PORT);

    // Bind the socket with th
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值