int Socket::connect(struct sockaddr *sa, socklen_t salen) { if (bindsocket() == -1) return -1; if (!utp_sock) { utp_sock = UTP_Create(_SendToProc, this, sa, salen); UTP_SetCallbacks(utp_sock, &utp_funcs, this); } UTP_Connect(utp_sock); }
void CUTPSocketSession::Connect(const struct sockaddr *sa, socklen_t sa_len) { ASSERT(!IsValid()); m_Socket = UTP_Create(&send_to, GetParent<CUTPSocketListner>(), sa, sa_len, &utp_overhead_2); //UTP_SetSockopt(m_Socket, SO_SNDBUF, 100*300); UTPFunctionTable utp_callbacks = {&utp_read, &utp_write, &utp_get_rb_size, &utp_state, &utp_error, &utp_overhead}; UTP_SetCallbacks(m_Socket, &utp_callbacks, this); UTP_Connect(m_Socket); }
struct tr_peer_socket tr_netOpenPeerUTPSocket(tr_session* session, tr_address const* addr, tr_port port, bool clientIsSeed UNUSED) { struct tr_peer_socket ret = TR_PEER_SOCKET_INIT; if (tr_address_is_valid_for_peers(addr, port)) { struct sockaddr_storage ss; socklen_t const sslen = setup_sockaddr(addr, port, &ss); struct UTPSocket* const socket = UTP_Create(tr_utpSendTo, session, (struct sockaddr*)&ss, sslen); if (socket != NULL) { ret = tr_peer_socket_utp_create(socket); } } return ret; }