通过bind绑定本机地址(local addr)以及端口(local port), 实现从本机端口(local port)发送以及监听;
通过connect指定目的地址(dst addr)以及目的端口(dst port), 实现目标地址的绑定;
源地址+源端口
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = inet_addr(localIP);
local_addr.sin_port = htons(localPort);
目的地址+目的端口
dst_addr.sin_family = AF_INET;
dst_addr.sin_addr.s_addr = inet_addr(dstIP);
dst_addr.sin_port = htons(dstPort);
把源地址和源端口绑定到m_socket
if(bind(m_socket, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0) {
LOG(ERROR) << "bind local address error, ";
return;
}
用m_socket连接目的地址和目的端口
if(connect(m_socket, (struct sockaddr*)&dst_addr,sizeof(dst_addr)) < 0) {
LOG(ERROR) << "connect to server error";
return;
}
之后可以发送和接收数据。
实现效果
localaddr(192.168.0.1) local port (8888)
dstaddr(192.168.0.2) local port(9999)
192.168.0.1:8888 -> 192.168.0.2:9999 发送消息