python类socket()的实例源码

nbNet_simple.py 文件源码 项目:Starfish 作者: BillWang139967 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def process(self, fd):
        '''read????? process ????
        '''
        # ??socket
        sock_state = self.conn_state[fd]
        # ????
        response = self.logic(sock_state.buff_read)
        # ????????????????????buff_write
        sock_state.buff_write = "%010d%s" % (len(response), response)
        # ???????
        sock_state.need_write = len(sock_state.buff_write)
        # ???????
        sock_state.state = "write"
        # ??epoll??????
        self.epoll_sock.modify(fd, select.EPOLLOUT)
        # ??write??
        self.state_machine(fd)
syscmd.py 文件源码 项目:Starfish 作者: BillWang139967 项目源码 文件源码 阅读 36 收藏 0 点赞 0 评论 0
def get_iphostname():
    '''??linux?????????IP??'''
    def get_ip(ifname):
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
        ipaddr = socket.inet_ntoa(fcntl.ioctl(
                            sock.fileno(), 
                            0x8915,  # SIOCGIFADDR 
                            struct.pack('256s', ifname[:15]) 
                            )[20:24]
                            )   
        sock.close()
        return ipaddr
    try:
        ip = get_ip('eth0')
    except IOError:
        ip = get_ip('eno1')
    hostname = socket.gethostname()
    return {'hostname': hostname, 'ip':ip}
piksi_driver.py 文件源码 项目:piksi_ros 作者: uscresl 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def write(self, s):
        return
        """
        Write wrapper.
        Parameters
        ----------
        s : bytes
        Bytes to write
        """
        try:
            self._write_lock.acquire()
            self.handle.sendall(s)
        except socket.error, msg:
            raise IOError
        finally:
            self._write_lock.release()


#
# # Classes for reading/writing observations to serial/udp
#
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def setServer(self, server):
        """Associate this Client with given server.
        The Client will send from the Server's socket.
        The Server will use this Client instance to send replies.
        """
        if server == None:
            if hasattr(self,'server') and self.server:
                if self.server.client != self:
                    raise OSCClientError("Internal inconsistency")
                self.server.client.close()
                self.server.client = None
            self.server = None
            return

        if not isinstance(server, OSCServer):
            raise ValueError("'server' argument is not a valid OSCServer object")

        self._setSocket(server.socket.dup())
        self.server = server

        if self.server.client != None:
            self.server.client.close()

        self.server.client = self
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def __eq__(self, other):
        """Compare function.
        """
        if not isinstance(other, self.__class__):
            return False

        if self.socket and other.socket:
            sockEqual = cmp(self.socket._sock, other.socket._sock)
        else:
            sockEqual = (self.socket == None and other.socket == None)

        if not sockEqual:
            return False

        if  self.server and other.server:
            return cmp(self.server, other.server)
        else:
            return self.server == None and other.server == None
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 32 收藏 0 点赞 0 评论 0
def setOSCTarget(self, address, prefix=None, filters=None):
        """Add (i.e. subscribe) a new OSCTarget, or change the prefix for an existing OSCTarget.
          the 'address' argument can be a ((host, port) tuple) : The target server address & UDP-port
            or a 'host' (string) : The host will be looked-up 
          - prefix (string): The OSC-address prefix prepended to the address of each OSCMessage
          sent to this OSCTarget (optional)
        """
        if type(address) in str:
            address = self._searchHostAddr(address)

        elif (type(address) == tuple):
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except:
                pass

            address = (host, port)
        else:
            raise TypeError("'address' argument must be a (host, port) tuple or a 'host' string")

        self._setTarget(address, prefix, filters)
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 42 收藏 0 点赞 0 评论 0
def delOSCTarget(self, address, prefix=None):
        """Delete the specified OSCTarget from the Client's dict.
        the 'address' argument can be a ((host, port) tuple), or a hostname.
        If the 'prefix' argument is given, the Target is only deleted if the address and prefix match.
        """
        if type(address) in str:
            address = self._searchHostAddr(address) 

        if type(address) == tuple:
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except socket.error:
                pass
            address = (host, port)

            self._delTarget(address, prefix)
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 43 收藏 0 点赞 0 评论 0
def hasOSCTarget(self, address, prefix=None):
        """Return True if the given OSCTarget exists in the Client's dict.
        the 'address' argument can be a ((host, port) tuple), or a hostname.
        If the 'prefix' argument is given, the return-value is only True if the address and prefix match.
        """
        if type(address) in str:
            address = self._searchHostAddr(address) 

        if type(address) == tuple:
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except socket.error:
                pass
            address = (host, port)

            if address in list(self.targets.keys()):
                if prefix == None:
                    return True
                elif prefix == self.targets[address][0]:
                    return True

        return False
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def __init__(self, server_address, client=None, return_port=0):
        """Instantiate an OSCServer.
          - server_address ((host, port) tuple): the local host & UDP-port
          the server listens on
          - client (OSCClient instance): The OSCClient used to send replies from this server.
          If none is supplied (default) an OSCClient will be created.
          - return_port (int): if supplied, sets the default UDP destination-port
          for replies coming from this server.
        """
        UDPServer.__init__(self, server_address, self.RequestHandlerClass)
        OSCAddressSpace.__init__(self)

        self.setReturnPort(return_port)
        self.error_prefix = ""
        self.info_prefix = "/info"

        self.socket.settimeout(self.socket_timeout)

        self.running = False
        self.client = None

        if client == None:
            self.client = OSCClient(server=self)
        else:
            self.setClient(client)
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def _transmitMsg(self, msg):
        """Send an OSC message over a streaming socket. Raises exception if it
        should fail. If everything is transmitted properly, True is returned. If
        socket has been closed, False.
        """
        if not isinstance(msg, OSCMessage):
            raise TypeError("'msg' argument is not an OSCMessage or OSCBundle object")

        try:
            binary = msg.getBinary()
            length = len(binary)
            # prepend length of packet before the actual message (big endian)
            len_big_endian = array.array('c', '\0' * 4)
            struct.pack_into(">L", len_big_endian, 0, length)
            len_big_endian = len_big_endian.tostring()
            if self._transmit(len_big_endian) and self._transmit(binary):
                return True
            return False            
        except socket.error as e:
            if e[0] == errno.EPIPE: # broken pipe
                return False
            raise e
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def _receiveWithTimeout(self, count):
        chunk = str()
        while len(chunk) < count:
            try:
                tmp = self.socket.recv(count - len(chunk))
            except socket.timeout:
                if not self._running:
                    print("CLIENT: Socket timed out and termination requested.")
                    return None
                else:
                    continue
            except socket.error as e:
                if e[0] == errno.ECONNRESET:
                    print("CLIENT: Connection reset by peer.")
                    return None
                else:
                    raise e
            if not tmp or len(tmp) == 0:
                print("CLIENT: Socket has been closed.")
                return None
            chunk = chunk + tmp
        return chunk
OSC3.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def _transmitWithTimeout(self, data):
        sent = 0
        while sent < len(data):
            try:
                tmp = self.socket.send(data[sent:])
            except socket.timeout:
                if not self._running:
                    print("CLIENT: Socket timed out and termination requested.")
                    return False
                else:
                    continue
            except socket.error as e:
                if e[0] == errno.ECONNRESET:
                    print("CLIENT: Connection reset by peer.")
                    return False
                else:
                    raise e
            if tmp == 0:
                return False
            sent += tmp
        return True
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def setServer(self, server):
        """Associate this Client with given server.
        The Client will send from the Server's socket.
        The Server will use this Client instance to send replies.
        """
        if server == None:
            if hasattr(self,'server') and self.server:
                if self.server.client != self:
                    raise OSCClientError("Internal inconsistency")
                self.server.client.close()
                self.server.client = None
            self.server = None
            return

        if not isinstance(server, OSCServer):
            raise ValueError("'server' argument is not a valid OSCServer object")

        self._setSocket(server.socket.dup())
        self.server = server

        if self.server.client != None:
            self.server.client.close()

        self.server.client = self
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def __eq__(self, other):
        """Compare function.
        """
        if not isinstance(other, self.__class__):
            return False

        if self.socket and other.socket:
            sockEqual = cmp(self.socket._sock, other.socket._sock)
        else:
            sockEqual = (self.socket == None and other.socket == None)

        if not sockEqual:
            return False

        if  self.server and other.server:
            return cmp(self.server, other.server)
        else:
            return self.server == None and other.server == None
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 36 收藏 0 点赞 0 评论 0
def setOSCTarget(self, address, prefix=None, filters=None):
        """Add (i.e. subscribe) a new OSCTarget, or change the prefix for an existing OSCTarget.
          the 'address' argument can be a ((host, port) tuple) : The target server address & UDP-port
            or a 'host' (string) : The host will be looked-up 
          - prefix (string): The OSC-address prefix prepended to the address of each OSCMessage
          sent to this OSCTarget (optional)
        """
        if type(address) in types.StringTypes:
            address = self._searchHostAddr(address)

        elif (type(address) == types.TupleType):
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except:
                pass

            address = (host, port)
        else:
            raise TypeError("'address' argument must be a (host, port) tuple or a 'host' string")

        self._setTarget(address, prefix, filters)
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def delOSCTarget(self, address, prefix=None):
        """Delete the specified OSCTarget from the Client's dict.
        the 'address' argument can be a ((host, port) tuple), or a hostname.
        If the 'prefix' argument is given, the Target is only deleted if the address and prefix match.
        """
        if type(address) in types.StringTypes:
            address = self._searchHostAddr(address) 

        if type(address) == types.TupleType:
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except socket.error:
                pass
            address = (host, port)

            self._delTarget(address, prefix)
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def hasOSCTarget(self, address, prefix=None):
        """Return True if the given OSCTarget exists in the Client's dict.
        the 'address' argument can be a ((host, port) tuple), or a hostname.
        If the 'prefix' argument is given, the return-value is only True if the address and prefix match.
        """
        if type(address) in types.StringTypes:
            address = self._searchHostAddr(address) 

        if type(address) == types.TupleType:
            (host, port) = address[:2]
            try:
                host = socket.gethostbyname(host)
            except socket.error:
                pass
            address = (host, port)

            if address in self.targets.keys():
                if prefix == None:
                    return True
                elif prefix == self.targets[address][0]:
                    return True

        return False
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def __init__(self, server_address, client=None, return_port=0):
        """Instantiate an OSCServer.
          - server_address ((host, port) tuple): the local host & UDP-port
          the server listens on
          - client (OSCClient instance): The OSCClient used to send replies from this server.
          If none is supplied (default) an OSCClient will be created.
          - return_port (int): if supplied, sets the default UDP destination-port
          for replies coming from this server.
        """
        UDPServer.__init__(self, server_address, self.RequestHandlerClass)
        OSCAddressSpace.__init__(self)

        self.setReturnPort(return_port)
        self.error_prefix = ""
        self.info_prefix = "/info"

        self.socket.settimeout(self.socket_timeout)

        self.running = False
        self.client = None

        if client == None:
            self.client = OSCClient(server=self)
        else:
            self.setClient(client)
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 45 收藏 0 点赞 0 评论 0
def _transmitMsg(self, msg):
        """Send an OSC message over a streaming socket. Raises exception if it
        should fail. If everything is transmitted properly, True is returned. If
        socket has been closed, False.
        """
        if not isinstance(msg, OSCMessage):
            raise TypeError("'msg' argument is not an OSCMessage or OSCBundle object")

        try:
            binary = msg.getBinary()
            length = len(binary)
            # prepend length of packet before the actual message (big endian)
            len_big_endian = array.array('c', '\0' * 4)
            struct.pack_into(">L", len_big_endian, 0, length)
            len_big_endian = len_big_endian.tostring()
            if self._transmit(len_big_endian) and self._transmit(binary):
                return True
            return False            
        except socket.error, e:
            if e[0] == errno.EPIPE: # broken pipe
                return False
            raise e
OSC2.py 文件源码 项目:pyOSC3 作者: Qirky 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def _receiveWithTimeout(self, count):
        chunk = str()
        while len(chunk) < count:
            try:
                tmp = self.socket.recv(count - len(chunk))
            except socket.timeout:
                if not self._running:
                    print "CLIENT: Socket timed out and termination requested."
                    return None
                else:
                    continue
            except socket.error, e:
                if e[0] == errno.ECONNRESET:
                    print "CLIENT: Connection reset by peer."
                    return None
                else:
                    raise e
            if not tmp or len(tmp) == 0:
                print "CLIENT: Socket has been closed."
                return None
            chunk = chunk + tmp
        return chunk


问题


面经


文章

微信
公众号

扫码关注公众号