关于多块网卡的机器指定网卡发送数据是的一个有关问题
关于多块网卡的机器指定网卡发送数据是的一个问题
请教大虾们一个问题,我的机器有两块网卡,一块用来收数据一块用来发数据,分工明确。在接收数据之前,我初始化一个socket A,bind()这个socket A到指定的收数据网卡,然后listen这个socket A,再调用accept()成功返回一个socket B,我想问一下socket B在接收accept()函数返回值之前是否需要bind()到指定接收数据的网卡(后面用socket B来接收数据)? 多谢了!
------解决方案--------------------
不需要,accept()返回已经建立连接的套接字,就是说它描述的内存数据结构中源地址和目的地址已经确定。打个比方,一栋大楼有很多信箱,你住进去的时候,会给你分配一个信箱,这个信箱就是你接受和发送信封的接口,你收到一封信后,说明你已经打开这个信箱,那么这个时候,你还需要打开另外一个信箱来回一封信么?你要做的,是写一封信,然后放到你收信的那个信箱里去。socket()就是你向管理员要一个信箱,bind()就是给你分配了一个具体的信箱。邮递员第一次将你的信放进你的信箱就说明你accept()成功。
请教大虾们一个问题,我的机器有两块网卡,一块用来收数据一块用来发数据,分工明确。在接收数据之前,我初始化一个socket A,bind()这个socket A到指定的收数据网卡,然后listen这个socket A,再调用accept()成功返回一个socket B,我想问一下socket B在接收accept()函数返回值之前是否需要bind()到指定接收数据的网卡(后面用socket B来接收数据)? 多谢了!
指定网卡收发数据时绑定网卡的问题
------解决方案--------------------
不需要,accept()返回已经建立连接的套接字,就是说它描述的内存数据结构中源地址和目的地址已经确定。打个比方,一栋大楼有很多信箱,你住进去的时候,会给你分配一个信箱,这个信箱就是你接受和发送信封的接口,你收到一封信后,说明你已经打开这个信箱,那么这个时候,你还需要打开另外一个信箱来回一封信么?你要做的,是写一封信,然后放到你收信的那个信箱里去。socket()就是你向管理员要一个信箱,bind()就是给你分配了一个具体的信箱。邮递员第一次将你的信放进你的信箱就说明你accept()成功。