python里tcpip通讯客户端和服务器端传文件怎么写?

python里tcpip通讯客户端和服务器端传文件怎么写?

最简单的,先传一个定长的字节表示文件的长度,然后开传。其实ftp就是标准的tcp/ip下传文件的应用啊。
这是我写的一部分发送文件,接收文件可以参考:
...
                try:
                        fileStats = os.stat ( pathname )         #取文件状态
                except WindowsError:
                        tcp_close( sockid )
                        raise '文件[' + pathname +']未找到'
                        return (1,'')


                sFileName = q
                i = len( sFileName )
                while( i < 30 ):
                        sFileName += '\0'
                        i += 1
               
                #发送文件名
                 rc = tcp_write( sockid , sFileName , 30 , timeout )
                if( rc ):
                        tcp_close( sockid )
                        raise Exception('TCP 发送文件名错误!' )
                        return (rc,'')

                #发送文件大小
                cFileSize = "%08d" %fileStats[stat.ST_SIZE]
                 rc = tcp_write( sockid , cFileSize , 8 , timeout )
                if( rc ):
                        tcp_close( sockid )
                        raise Exception('TCP 发送文件大小错误!' )
                        return (rc,'')

                print "发送文件[%s]大小[%d]..." %(q, fileStats[stat.ST_SIZE] )
                #发送文件数据
                try:
                        fd = open( pathname , 'rb' )
                except IOError:
                        tcp_close( sockid )
                        raise '文件[' + pathname +']未找到'
                        return (rc,'')

                sndLenSum=0
                while (1):
                        tmpBuf = ''
                        tmpBuf = fd.read(512)
                        if( tmpBuf == '' ):                #文件读完了
                                break
                        sndLen = len( tmpBuf )
                        sndLenSum += sndLen
                         rc = tcp_write( sockid , tmpBuf , sndLen , timeout )
                        if( rc ):
                                tcp_close( sockid )
                                fd.close()
                                raise Exception('TCP 发送文件错误!' )
                                return (rc,'')

                        #end of while


                #关闭文件
                fd.close()

...