--- a/qmsk/net/socket/socket.pyx Mon Aug 17 00:55:25 2009 +0300
+++ b/qmsk/net/socket/socket.pyx Mon Aug 17 01:03:40 2009 +0300
@@ -203,6 +203,42 @@
cdef sockaddr src_addr = build_sockaddr(<platform.sockaddr *> &ss, ss_len)
return sock_obj, src_addr
+
+ def getsockname (self) :
+ """
+ Get the local address this socket is currently bound to. This can be set using bind(), or automatically.
+
+ Returns a sockaddr object.
+ """
+
+ # prep the sockaddr that we will return
+ cdef platform.sockaddr_storage ss
+ cdef platform.socklen_t ss_len = sizeof(ss)
+
+ # getsockname()
+ if platform.getsockname(self.fd, <platform.sockaddr *> &ss, &ss_len) :
+ raise_errno('getsockname')
+
+ # build the new sockaddr
+ return build_sockaddr(<platform.sockaddr *> &ss, ss_len)
+
+ def getpeername (self) :
+ """
+ Get the remote address this socket is currently connected to.
+
+ Returns a sockaddr object.
+ """
+
+ # prep the sockaddr that we will return
+ cdef platform.sockaddr_storage ss
+ cdef platform.socklen_t ss_len = sizeof(ss)
+
+ # getpeername()
+ if platform.getpeername(self.fd, <platform.sockaddr *> &ss, &ss_len) :
+ raise_errno('getpeername')
+
+ # build the new sockaddr
+ return build_sockaddr(<platform.sockaddr *> &ss, ss_len)
def send (self, object buf, int flags = 0) :
"""