예제 #1
0
 def test_tcpconnection_hostname_ip6(self):
     hostname = _socket.gethostname()
     try:
         hostaddress, hostport = ip.resolve(hostname, 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         serv = tcp.EchoServer(host="::")
         conn = tcp.TcpConnection("tcp://%s:%d"%(hostname, serv.name()[1]), 
                              ip.PF_INET6)
         conn.readyRead.connect(self.__readdata)
         QtCore.QTimer.singleShot(100, lambda:self.__send_data(conn))
         QtCore.QTimer.singleShot(1000, self.app.quit)
         self.app.exec_()
         url = conn.url()
         peerurl = conn.peerUrl()
         self.assertIsInstance(url, URL)
         self.assertEqual(url.scheme, "tcp")
         self.assertEqual(conn.name(), (url.site.host, url.site.port))
         self.assertEqual(conn.peerName(), (peerurl.site.host, 
                                            peerurl.site.port))
         self.assertEqual(peerurl.site.host, "::1")
         self.assertEqual(peerurl.site.port, serv.name()[1])
         self.assertEqual(self.data, self.result)
         conn.close()
예제 #2
0
 def test_udplistener_hostname_IPv6_reuse(self):
     hostname = socket.gethostname()
     try:
         hostaddress, hostport = ip.resolve(hostname, 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         lock = UdpListener("udp://%s:0"%hostname, ip.PF_INET6, ("reuse",))
         port = lock.name()[1]
         self.assertRaises(Exception, UdpListener, 
                           "udp://%s:%d"%(hostname, port), ip.PF_INET6)
         l = UdpListener("udp://%s:%d"%(hostname, port),
                         ip.PF_INET6, ("reuse",))
         url = l.url()
         self.assertEqual(url.site.port, port)
         s = socket.socket(ip.PF_INET6, socket.SOCK_DGRAM)
         s.connect(l.name())
         sockname = s.getsockname()[:2]
         sockname = (sockname[0].partition("%")[0], sockname[1])
         s.send(self.data)
         time.sleep(_sec)
         if sys.platform in ("win32", "darwin"): data, source = lock.receiveFrom()
         else: data, source = l.receiveFrom()
         self.assertEqual(data, self.data)
         self.assertEqual(source, sockname)
         lock.close()
         s.close()
예제 #3
0
파일: tcp.py 프로젝트: olivopaolo/boing
 def connect(self, host, port, family=None):
     """Raises Exception if host cannot be resolved."""
     host, port = ip.resolve(host, port,
                             family if family is not None else 0,
                             _socket.SOCK_STREAM)[:2]
     self.connectToHost(host, port)
     return self
예제 #4
0
파일: udp.py 프로젝트: olivopaolo/boing
 def sendTo(self, data, host, port, family=None, resolve=True):
     """Raises Exception if host cannot be resolved."""
     if resolve:
         host, port = ip.resolve(host, port,
                                 family if family is not None else 0,
                                 _socket.SOCK_DGRAM)[:2]
     return self.writeDatagram(data, QHostAddress(host), port)
예제 #5
0
 def test_udplistener_localhost_IPv6(self):
     try:
         hostaddress, hostport = ip.resolve("localhost", 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         l = UdpListener("udp://localhost:0", ip.PF_INET6)
         s = socket.socket(ip.PF_INET6, socket.SOCK_DGRAM)
         s.connect(l.name())
         s.send(self.data)
         time.sleep(_sec)
         data, source = l.receiveFrom()
         self.assertEqual(data, self.data)
         self.assertEqual(source, s.getsockname()[:2])
         s.close()
예제 #6
0
 def test_udpsocket_localhost_IPv6(self):
     try:
         hostaddress, hostport = ip.resolve("localhost", 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         l = socket.socket(ip.PF_INET6, socket.SOCK_DGRAM)
         l.bind(("localhost",0))
         addr, port = l.getsockname()[:2]
         s = UdpSocket()
         n = s.sendTo(self.data, "localhost", int(port), ip.PF_INET6)
         self.assertEqual(n, len(self.data))
         time.sleep(_sec)
         data, source = l.recvfrom(1024)
         self.assertEqual(data, self.data)
         l.close()
예제 #7
0
파일: udp.py 프로젝트: olivopaolo/boing
 def bind(self, host=None, port=0, family=None,
          mode=QUdpSocket.DontShareAddress):
     """Raises Exception if UDP socket cannot be bound at specified
     host and port."""
     if not host:
         if family==ip.PF_INET6: host = QHostAddress.AnyIPv6
         else: host = QHostAddress.Any
     if not QHostAddress(host) in (QHostAddress.Any,
                                   QHostAddress.AnyIPv6):
         host, port = ip.resolve(host, port,
                                 family if family is not None else 0,
                                 _socket.SOCK_DGRAM)[:2]
     if not QUdpSocket.bind(self, QHostAddress(host), port, mode):
         raise Exception(self.errorString())
     self.__open = True
     return self
예제 #8
0
 def test_udplistener_hostname_IPv4(self):
     hostname = socket.gethostname()
     try:
         hostaddress, hostport = ip.resolve(hostname, 0, ip.PF_INET)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         l = UdpListener("udp://%s:0"%hostname, ip.PF_INET)
         s = socket.socket(ip.PF_INET, socket.SOCK_DGRAM)
         s.connect(l.name())
         time.sleep(_sec)
         sockname = s.getsockname()
         s.send(self.data)
         data, source = l.receiveFrom()
         self.assertEqual(data, self.data)
         self.assertEqual(source, sockname)
         s.close()
예제 #9
0
 def test_tcpserver_hostname_IPv6_nodelay(self):
     hostname = _socket.gethostname()
     try:
         hostaddress, hostport = ip.resolve(hostname, 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         s = tcp.TcpServer(host=hostname, family=ip.PF_INET6, options=("nodelay",))
         s.newConnection.connect(self.__newconnection)
         ref = weakref.ref(s)
         url = s.url()        
         self.assertIsInstance(url, URL)
         self.assertEqual(url.scheme, "tcp")
         self.assertEqual(hostaddress.partition("%")[0], url.site.host)
         self.assertEqual(s.name(), (url.site.host, url.site.port))
         self.tryConnectToServer(s)
         del s
         self.assertIsNone(ref())
예제 #10
0
파일: tcp.py 프로젝트: olivopaolo/boing
 def __init__(self, host=None, port=0, family=None,
              maxconnections=30, factory=TcpSocket, options=tuple(),
              *args, **kwargs):
     """Raises Exception if TCP socket cannot be bound at specified
     host and port."""
     super().__init__(*args, **kwargs)
     self.__factory = factory
     self.__options = options if options is not None else tuple()
     self.setMaxPendingConnections(maxconnections)
     if not host:
         if family==ip.PF_INET6: host = QHostAddress.AnyIPv6
         else: host = QHostAddress.Any
     if not QHostAddress(host) in (QHostAddress.Any,
                                   QHostAddress.AnyIPv6):
         host, port = ip.resolve(host, port,
                                 family if family is not None else 0,
                                 _socket.SOCK_STREAM)[:2]
     if not self.listen(QHostAddress(host), int(port)):
         raise Exception(self.errorString())
예제 #11
0
 def test_udpsender_localhost_IPv6(self):
     try:
         hostaddress, hostport = ip.resolve("localhost", 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         l = socket.socket(ip.PF_INET6, socket.SOCK_DGRAM)
         l.bind(("localhost",0))
         addr, port = l.getsockname()[:2]
         s = UdpSender("udp://localhost:%d"%port, ip.PF_INET6)
         url = s.url()
         peerurl = s.peerUrl()
         self.assertEqual((peerurl.site.host, peerurl.site.port), 
                          l.getsockname()[:2])        
         n = s.send(self.data)
         self.assertEqual(n, len(self.data))
         time.sleep(_sec)
         data, source = l.recvfrom(1024)
         self.assertEqual(data, self.data)
         self.assertEqual(source[:2], (url.site.host, url.site.port))
         l.close()
예제 #12
0
 def test_udpsender_hostname_IPv4(self):
     hostname = socket.gethostname()
     try:
         hostaddress, hostport = ip.resolve(hostname, 0, ip.PF_INET)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         l = socket.socket(ip.PF_INET, socket.SOCK_DGRAM)
         l.bind((hostname, 0))
         addr, port = l.getsockname()[:2]
         s = UdpSender("udp://%s:%d"%(hostname, port), ip.PF_INET)
         url = s.url()
         peerurl = s.peerUrl()
         sockname = l.getsockname()[:2]
         self.assertEqual((peerurl.site.host, peerurl.site.port), sockname)        
         n = s.send(self.data)
         self.assertEqual(n, len(self.data))
         time.sleep(_sec)
         data, source = l.recvfrom(1024)
         self.assertEqual(data, self.data)
         self.assertEqual(source, (url.site.host, url.site.port))
         l.close()
예제 #13
0
 def test_udplistener_localhost_IPv6_reuse(self):
     try:
         hostaddress, hostport = ip.resolve("localhost", 0, ip.PF_INET6)
     except Exception:
         hostaddress, hostport = None, 0
     if hostaddress is not None:
         lock = UdpListener("udp://localhost:0", ip.PF_INET6, ("reuse",))
         port = lock.name()[1]
         s = socket.socket(ip.PF_INET6, socket.SOCK_DGRAM)
         self.assertRaises(Exception, UdpListener, 
                           "udp://localhost:%d"%port, ip.PF_INET6)
         l = UdpListener("udp://localhost:%d"%port,
                         ip.PF_INET6, ("reuse",))
         url = l.url()
         self.assertEqual(url.site.port, port)
         s.connect((url.site.host, url.site.port))
         s.send(self.data)
         time.sleep(_sec)
         if sys.platform in ("win32", ): data, source = lock.receiveFrom()
         else: data, source = l.receiveFrom()
         self.assertEqual(data, self.data)
         self.assertEqual(source, s.getsockname()[:2])
         lock.close()
         s.close()