void xPLController::Connect() { int portTCP; m_UdpRecvHandle = uvw::Loop::getDefault()->resource<uvw::UDPHandle>(); m_UdpRecvHandle->on<uvw::UDPDataEvent>([this](const uvw::UDPDataEvent &ev, auto &) { this->udpListenData(ev.data.get(), ev.length, ev.sender.ip, ev.sender.port); }); m_UdpRecvHandle->once<uvw::ErrorEvent>([this](const uvw::ErrorEvent &ev, uvw::UDPHandle &h) { cErrorDom("xpl") << "xPL UDP server error : " << ev.what(); h.once<uvw::CloseEvent>([this](auto &, auto &) { Timer::singleShot(2.5, (sigc::slot<void>)sigc::mem_fun(*this, &xPLController::Connect)); }); h.close(); }); portTCP = discoverxPLPort(); m_UdpRecvHandle->broadcast(true); cInfoDom("xpl") << "Listening on port " << portTCP; m_UdpRecvHandle->bind("0.0.0.0", portTCP, uvw::UDPHandle::Bind::REUSEADDR); m_UdpRecvHandle->recv(); m_xPLDevice.SetRecvSockInfo(localAddress(), portTCP); m_xPLDevice.Close(); m_xPLDevice.Open(); }
QString QBluetoothSocketPrivate::localName() const { const QBluetoothAddress address = localAddress(); if (address.isNull()) return QString(); QBluetoothLocalDevice device(address); return device.name(); }
void UDPSocket::readPendingDatagrams() { //qDebug()<<"----UDPSocket::readPendingDatagrams()"; while (hasPendingDatagrams()) { datagram->clear(); qint64 datagramSize = pendingDatagramSize(); datagram->resize(datagramSize); QHostAddress peerAddress; quint16 peerPort; qint64 readSize = readDatagram(datagram->data(), datagramSize, &peerAddress, &peerPort); if(readSize == -1){ qWarning()<<"Can not read datagram!"; break; } //qDebug()<<"~~datagramSize:"<<datagramSize; QDataStream in(datagram, QIODevice::ReadOnly); in.setVersion(QDataStream::Qt_4_7); QVariant v; in >> v; if (v.canConvert<Packet>()){ //Packet *packet = new Packet(); Packet *packet = PacketHandlerBase::getPacket(); *packet = v.value<Packet>(); packet->setTransmissionProtocol(TP_UDP); packet->setPeerHostAddress(peerAddress); packet->setPeerHostPort(peerPort); packet->setLocalHostAddress(localAddress()); packet->setLocalHostPort(localPort()); // qWarning()<<""; // qWarning()<<"~~packet->getPacketData().size():"<<packet->getPacketData().size(); // qWarning()<<"~~peerAddress.toString():"<<peerAddress.toString(); // qWarning()<<"~~peerPort:"<<peerPort; // qWarning()<<"~~localAddress():"<<localAddress().toString(); // qWarning()<<"~~localPort():"<<localPort(); // qWarning()<<""; emit signalNewUDPPacketReceived(packet); }else{ qWarning()<<"ERROR! Can not convert UDP data to Packet!"; } } datagram->clear(); datagram->resize(0); }
// // Download // void Options::Download() { VarString firewall("$.firewall", this); VarString localAddress("$.localAddress", this); VarInteger port("$.port", this); VarString proxy("$.proxy", this); Settings::SetFirewallStatus(Crc::CalcStr(firewall)); Settings::SetLocalAddress(inet_addr(*localAddress)); Settings::SetPort(port); Settings::SetProxy(proxy); Settings::SaveToUser(); }
QString QBluetoothSocketPrivate::peerName() const { quint64 bdaddr; if (socketType == QBluetoothServiceInfo::RfcommProtocol) { sockaddr_rc addr; socklen_t addrLength = sizeof(addr); if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) < 0) return QString(); convertAddress(addr.rc_bdaddr.b, bdaddr); } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { sockaddr_l2 addr; socklen_t addrLength = sizeof(addr); if (::getpeername(socket, reinterpret_cast<sockaddr *>(&addr), &addrLength) < 0) return QString(); convertAddress(addr.l2_bdaddr.b, bdaddr); } else { qCWarning(QT_BT_BLUEZ) << "peerName() called on socket of unknown type"; return QString(); } const QString peerAddress = QBluetoothAddress(bdaddr).toString(); const QString localAdapter = localAddress().toString(); if (isBluez5()) { OrgFreedesktopDBusObjectManagerInterface manager(QStringLiteral("org.bluez"), QStringLiteral("/"), QDBusConnection::systemBus()); QDBusPendingReply<ManagedObjectList> reply = manager.GetManagedObjects(); reply.waitForFinished(); if (reply.isError()) return QString(); foreach (const QDBusObjectPath &path, reply.value().keys()) { const InterfaceList ifaceList = reply.value().value(path); foreach (const QString &iface, ifaceList.keys()) { if (iface == QStringLiteral("org.bluez.Device1")) { if (ifaceList.value(iface).value(QStringLiteral("Address")).toString() == peerAddress) return ifaceList.value(iface).value(QStringLiteral("Alias")).toString(); } } } return QString(); } else {
NPT_UdpMulticastSocket* Server::getNewMulticastSocket() { NPT_NetworkInterface* serverInterface = gMS->serverInterface(); auto addresses = serverInterface->GetAddresses(); if (!addresses.GetFirstItem()) { throw new std::runtime_error("No usable addresses found for UPnP multicast"); } NPT_SocketAddress localAddress((*addresses.GetFirstItem()).GetPrimaryAddress(), 0); NPT_UdpMulticastSocket* ssdpSocket = new NPT_UdpMulticastSocket(); ssdpSocket->Bind(localAddress, true); ssdpSocket->SetTimeToLive(32); return ssdpSocket; }
int Socket::accept() { int peerfd = ::accept(sockfd_, NULL, NULL); if(-1 == peerfd) { perror("accept error"); exit(EXIT_FAILURE); } InetAddress local = localAddress(peerfd); InetAddress peer = peerAddress(peerfd); printf("connected! %s:%d -> %s:%d\n", local.ip().c_str(), local.port(), peer.ip().c_str(), peer.port()); return peerfd; }
// // Upload // void Options::Upload() { VarString firewall("$.firewall", this); VarString localAddress("$.localAddress", this); VarInteger port("$.port", this); VarString proxy("$.proxy", this); Settings::LoadFromUser(); switch (Settings::GetConfigFirewallStatus()) { case Settings::FirewallStatus::AutoDetect: firewall = "FirewallStatus::AutoDetect"; break; case Settings::FirewallStatus::BehindFirewall: firewall = "FirewallStatus::BehindFirewall"; break; case Settings::FirewallStatus::NotBehindFirewall: firewall = "FirewallStatus::NotBehindFirewall"; break; } if (Settings::GetLocalAddress()) { in_addr addr; addr.s_addr = Settings::GetLocalAddress(); localAddress = inet_ntoa(addr); } else { localAddress = ""; } port = Settings::GetConfigPort(); proxy = Settings::GetProxy(); }