怀化百度整站优化服务,怎么做网站后端,中小企业网站制作407,com网站是用什么做的绑定vlan#xff0c;网卡的demon#xff0c;如果有多个网卡#xff0c;多个vlan#xff0c;网卡的ip设置成一致#xff0c;那就不能只简单绑定ip来创建socket#xff0c; 需要绑定网卡设备
客户端udp_client.c #include stdio.h
#include string.h
#inc…绑定vlan网卡的demon如果有多个网卡多个vlan网卡的ip设置成一致那就不能只简单绑定ip来创建socket 需要绑定网卡设备
客户端udp_client.c #include stdio.h
#include string.h
#include unistd.h
#include stdlib.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include net/if.h
#include linux/sockios.h
#include sys/ioctl.h#include arpa/inet.h
#include errno.h
#include net/if.h
#include netinet/ether.h
#include netinet/in.h
#include netpacket/packet.h
#include stdio.h
#include stdlib.h
#include string.h
#include sys/ioctl.h
#include sys/socket.h
#include sys/types.h
#include time.h
#include unistd.h
#include fcntl.h
#include termios.h#define BUF_SIZE 1024
#define INTERFAXENAME mgbe3_0.14int sock;int main(int argc, char *argv[])
{int ret 0;char buf[1024];memset(buf,1,1024);if ( (socksocket(AF_INET, SOCK_DGRAM, 0)) 0){perror(socket);exit(1);}struct ifreq interface;strncpy(interface.ifr_ifrn.ifrn_name, INTERFAXENAME, sizeof(INTERFAXENAME));if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, (char *)interface, sizeof(interface)) 0) // 绑定vlan网卡设备{perror(SO_BINDTODEVICE failed);}struct sockaddr_in addr;memset(addr, 0, sizeof(addr));addr.sin_family AF_INET;addr.sin_port htons(31004);addr.sin_addr.s_addr inet_addr(198.18.36.3);ret bind(sock, (struct sockaddr *)addr, sizeof(addr));if (ret 0) {printf(%s: bind 198.18.36.3 failed\n, __FUNCTION__);close(sock);return 0;}elseprintf(bind 198.18.36.3 success \r\n);struct sockaddr_in server_addr;memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(31004);server_addr.sin_addr.s_addr inet_addr(198.18.36.1);while(1){ret sendto(sock, buf, 1024, 0,(struct sockaddr *)server_addr, sizeof(server_addr));printf(sendto 198.18.36.1 ret:%d\n, ret);usleep(200000);}close(sock);return 0;
}
服务端udp_service.c #include stdio.h
#include string.h
#include unistd.h
#include stdlib.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include net/if.h
#include linux/sockios.h
#include sys/ioctl.h#include arpa/inet.h
#include errno.h
#include net/if.h
#include netinet/ether.h
#include netinet/in.h
#include netpacket/packet.h
#include stdio.h
#include stdlib.h
#include string.h
#include sys/ioctl.h
#include sys/socket.h
#include sys/types.h
#include time.h
#include unistd.h
#include fcntl.h
#include termios.h#define BUF_SIZE 1024
#define INTERFAXENAME mgbe3_0.14int sock;int main(int argc, char *argv[])
{int ret 0;char buf[1024];memset(buf,1,1024);if ( (socksocket(AF_INET, SOCK_DGRAM, 0)) 0){perror(socket);exit(1);}struct ifreq interface;strncpy(interface.ifr_ifrn.ifrn_name, INTERFAXENAME, sizeof(INTERFAXENAME));if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, (char *)interface, sizeof(interface)) 0) // 绑定vlan网卡设备{perror(SO_BINDTODEVICE failed);}struct sockaddr_in server_addr;memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(31004);server_addr.sin_addr.s_addr inet_addr(198.16.37.4);ret bind(sock, (struct sockaddr *)server_addr, sizeof(server_addr));if (ret 0) {printf(%s: bind 198.16.37.4 failed\n, __FUNCTION__);close(sock);return 0;}elseprintf(bind 198.16.37.4 success \r\n);struct sockaddr_in client_addr;socklen_t len;len sizeof(client_addr);while(1){ret recvfrom(sock, buf, 1024, 0,(struct sockaddr *)client_addr, len);printf(recvfrom 198.16.37.3 ret:%d\n, ret);}close(sock);return 0;
}将两个程序编译成二进制执行程序放到开发板运行就行测试。