Hello there, I am in the midst of converting my application from python 1.5.2 to python 2.7.1 on HP-UX 11 Itanium box.
My application server will set a listening port, accepting request from multiple clients. The code just works fine in the old python environment. E.g. when I do a lsof | grep <listening port> I got the following. python 62602 genasm 5u IPv4 0x7350d1f0 0t0 TCP zmy02aix02:12121 (LISTEN) python 62602 genasm 6u IPv4 0x744fb5f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51867 (ESTABLISHED) python 62602 genasm 7u IPv4 0x75b959f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51869 (ESTABLISHED) python 62602 genasm 8u IPv4 0x75a559f0 0t0 TCP zmy02aix02:12121->zmy02aix02-bkup:51873 (ESTABLISHED) Strange things happened in python 2.7.1. Without modifying the code of how the socket was created and how the TCP/IP address was bound to the socket, it seems that every other processes that I run, which supposed to connect to the listening port as a client program, also appears to be holding a listening port. This is weird. Anyone has encountered this before especially when you were converting from an old python to a new python? Like you can see below there are 5 processes hosting the listening port of 18882. $ lsof -i tcp | grep 18882 python 10598 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 18181 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 20025 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 26295 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) python 26428 r32813 3u IPv4 0xe00000050b73e400 0t0 TCP zmy02hp3.ap.freescale.net:18882 (LISTEN) Since only one of them is the genuine process holding the port, I need to kill off the rest of the process if I need to restart the genuine process running under that port. It should not work this way. Here is the code of the application process that hosts the listening port. self.sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) self.sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) self.sock.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1 self.sock.setsockopt( socket.IPPROTO_TCP, _TCP_NODELAY, 1 ) self.sock.bind( self.server_address ) Here is the client code that does the connection. self.sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) self.sock.setsockopt( socket.IPPROTO_TCP, _TCP_NODELAY, 1 ) self.sock.connect( self.server_address ) Regards, Wah Meng -- http://mail.python.org/mailman/listinfo/python-list