UDT ライブラリを使用して、NAT の背後にあるコンピューターとの間でファイルを転送しています。私はすでにPythonで穴あけプロトコルを行っており、それがどのように機能するかを知っています。ここでは、UDT ソケットを既存の UDP ソケットにバインドしようとしています。
int udt_holepunching(SOCKET sock, SOCKADDR_IN sin, int size, SOCKADDR_IN peeraddr)
{
UDTSOCKET u;
bool rdv = true;
UDT::setsockopt(u, 0, UDT_RENDEZVOUS, &rdv, sizeof(bool));
UDT::bind(u, sock);
UDT::connect(u, &peeraddr, sizeof(peeraddr));
}
sock
既存のUDPソケットと話しpeeraddr
たいコンピューターのアドレスで
私はこのエラーがあります:
client.cpp: In function ‘int udt_holepunching(SOCKET, SOCKADDR_IN, int, SOCKADDR_IN)’:
client.cpp:29:20: error: invalid conversion from ‘SOCKET {aka int}’ to ‘const sockaddr*’ [-fpermissive]
UDT::bind(u, sock);
^
client.cpp:29:20: error: too few arguments to function ‘int UDT::bind(UDTSOCKET, const sockaddr*, int)’
In file included from client.cpp:13:0:
../src/udt.h:315:13: note: declared here
UDT_API int bind(UDTSOCKET u, const struct sockaddr* name, int namelen);
UDT bind documentationでは可能であるように見えるので、それはちょっと奇妙です。