| 804 | | self._serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 805 | | self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| 806 | | self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) |
| 807 | | self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) |
| 808 | | # will fail when port as busy, or we don't have rights to bind |
| 809 | | try: |
| 810 | | self._serv.bind(('0.0.0.0', self.port)) |
| 811 | | except Exception, e: |
| | 807 | for ai in self.ais: |
| | 808 | #try the different possibilities (ipv6, ipv4, etc.) |
| | 809 | self._serv = socket.socket(*ai[:3]) |
| | 810 | self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| | 811 | self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) |
| | 812 | self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) |
| | 813 | # will fail when port as busy, or we don't have rights to bind |
| | 814 | try: |
| | 815 | self._serv.bind(ai[4]) |
| | 816 | self.ai = ai |
| | 817 | break |
| | 818 | except: |
| | 819 | self.ai = None |
| | 820 | continue |
| | 821 | if not self.ai: |
| 887 | | self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 888 | | # this will not block the GUI |
| 889 | | self._sock.setblocking(False) |
| | 897 | for ai in self.ais: |
| | 898 | try: |
| | 899 | self._sock=socket.socket(*ai[:3]) |
| | 900 | # this will not block the GUI |
| | 901 | self._sock.setblocking(False) |
| | 902 | self._server=ai[4] |
| | 903 | break |
| | 904 | except: |
| | 905 | if sys.exc_value[0] == errno.EINPROGRESS: |
| | 906 | break |
| | 907 | #for all errors, we try other addresses |
| | 908 | continue |