目錄
- 前言
- 正文
前言
李柱明部落格:https://i.cnblogs.com/posts/edit-done;postId=15487160
正文
在多網卡程式設計時,指定使用特定的網卡,通過
bind();
綁定就可以了。
- 注意:原理是在
裡面會輪詢網卡連結清單,找出 IP 對應的網卡進行連接配接。connect();
如:
參考:stackoverflow
網卡 A:192.168.111.112
網卡 B:10.113.114.115
若使用網卡 A(用戶端 demo):
// Error checking omitted for expository purposes
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
// Bind to a specific network interface (and optionally a specific local port)
struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_addr.s_addr = inet_addr("192.168.111.112");
localaddr.sin_port = 0; // Any local port will do
bind(sockfd, (struct sockaddr *)&localaddr, sizeof(localaddr));
// Connect to the remote server
struct sockaddr_in remoteaddr;
remoteaddr.sin_family = AF_INET;
remoteaddr.sin_addr.s_addr = inet_addr(server_ip);
remoteaddr.sin_port = htons(server_port);
connect(sockfd, (struct sockaddr *)&remoteaddr, sizeof(remoteaddr));