栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Linux C语言 双网卡进行互相的端口转发例程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux C语言 双网卡进行互相的端口转发例程

我板卡的双网卡分别是192.168.2.111、192.168.1.111,假设他们分别接收来自192.168.2.2、192.168.1.10的数据。

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


int main(void)
{
	int udp_socket_fd = socket(AF_INET,SOCK_DGRAM,0);
	if(udp_socket_fd < 0)
	{
		printf("create socket failn");
		return -1;
	}
	
	//2.设置UDP的地址并绑定 
	struct sockaddr_in  local_addr = {0};
	local_addr.sin_family  = AF_INET; //使用IPv4协议
	local_addr.sin_port	= htons(161);   //网络通信都使用大端格式
	local_addr.sin_addr.s_addr = INADDR_ANY;//让系统检测本地网卡,自动绑定本地IP
 
	//设置目的IP地址
    struct sockaddr_in dest_addr = {0};
    dest_addr.sin_family = AF_INET;//使用IPv4协议
    dest_addr.sin_port = htons(161);//设置接收方端口号

	int ret = bind(udp_socket_fd,(struct sockaddr*)&local_addr,sizeof(local_addr));
	if(ret < 0)
	{
		perror("bind fail:");
		close(udp_socket_fd);
		return -1;
	}
	
	struct sockaddr_in  src_addr = {0};  //用来存放对方(信息的发送方)的IP地址信息
	int len = sizeof(src_addr);	//地址信息的大小
	char buf[1024] = {0};//消息缓冲区
	
	while(1)
	{
		ret = recvfrom(udp_socket_fd, buf, sizeof(buf), 0, (struct sockaddr *)&src_addr, &len);
		if(ret == -1)
		{
			break;
		}
		printf("[%s:%d]",inet_ntoa(src_addr.sin_addr),ntohs(src_addr.sin_port));//打印消息发送方的ip与端口号
		printf("buf=%sn",buf);
		
		if(strcmp(inet_ntoa(src_addr.sin_addr),"192.168.2.2") == 0)
		{
			dest_addr.sin_addr.s_addr = inet_addr("192.168.1.10"); //设置接收方IP 
			sendto(udp_socket_fd, buf, strlen(buf), 0, (struct sockaddr *)&dest_addr,sizeof(dest_addr));
		}
		if(strcmp(inet_ntoa(src_addr.sin_addr),"192.168.1.10") == 0)
		{
			dest_addr.sin_addr.s_addr = inet_addr("192.168.2.2"); //设置接收方IP 
			sendto(udp_socket_fd, buf, strlen(buf), 0, (struct sockaddr *)&dest_addr,sizeof(dest_addr));
		}
		if(strcmp(buf, "exit") == 0)
		{
			break;
		}
		memset(buf, 0, sizeof(buf));//清空存留消息
 
	}
	close(udp_socket_fd);
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号