제목 그대로
여러개의 네트워크 인터페이스를 갖는 리눅스 호스트에서 소켓통신할때
자신이 직접 통신에 사용될 호스트의 네트워크 인터페이스를 바인딩 하는방법이 있을까요????
pseudo code 참고하시기 바랍니다.
// ------------------------------------------------------------------------ // bind // ------------------------------------------------------------------------ tcpSession->addr.sin_family = AF_INET; tcpSession->addr.sin_port = htons(quint16(localPort)); if (localHost == 0) { tcpSession->addr.sin_addr.s_addr = INADDR_ANY; } else { IP ip = VNet::resolve(localHost); if (ip == 0) { SET_ERROR(VNetError, qformat("can not resolve host(%s)", qPrintable(localHost)), VERR_CAN_NOT_RESOLVE_HOST); return false; } tcpSession->addr.sin_addr.s_addr = htonl(ip); } memset(&tcpSession->addr.sin_zero, 0, sizeof(tcpSession->addr.sin_zero)); int res = bind(tcpSession->handle, (SOCKADDR*)&tcpSession->addr, sizeof(tcpSession->addr)); if (res == SOCKET_ERROR) { SET_ERROR(VSocketError, qformat("error in bind(%s:%d)", qPrintable(localHost), localPort), WSAGetLastError()); return false; }
www.gilgil.net
man 7 socket 보시면 SO_BINDTODEVICE 에 대한 설명이 있습니다.
전세계 수억명의 코더들 중에 유독 나 혼자만 이 문제로 고민하는 것이라고 생각되지 않는다면 검색부터.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
socket을 생성한 이후 local addr을 bind해 주시면 됩니다.
pseudo code 참고하시기 바랍니다.
www.gilgil.net
man 7 socket 보시면
man 7 socket
보시면 SO_BINDTODEVICE 에 대한 설명이 있습니다.
전세계 수억명의 코더들 중에 유독 나 혼자만 이 문제로 고민하는 것이라고 생각되지 않는다면
검색부터.
댓글 달기