打印
[嵌入式linux]

发个windows下的tcp调试工具(python代码 69行)

[复制链接]
3144|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinanjj|  楼主 | 2010-3-28 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#!/usr/bin/env python
import sys
import os
import socket
import string
# windows only
import msvcrt

if len(sys.argv) != 3:
        print "usage: %s target_ip target_port" %(os.path.split(sys.argv[0])[1])
        sys.exit(0)

try:
        target_ip = socket.gethostbyname(sys.argv[1])
except:
        print "unknown target_ip: %s" %(sys.argv[1])
        sys.exit(0)
try:
        target_port = int(sys.argv[2])
except:
        print "target_port: %s error" %(sys.argv[2])
        sys.exit(0)
if target_port <= 0:
        print "target_port: %s error" %(sys.argv[2])
        sys.exit(0)

output_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
        output_socket.connect((target_ip,target_port))
except:
        print 'connect error'
        sys.exit(0)
output_socket.settimeout(0.5)        # non-blocking
buf = ""
buf_output = ""
flag_timeout=0
while 1:
        # socket
        try:
                buf = output_socket.recv(1024)
        except socket.timeout:
                flag_timeout=1
                pass
        except:
                break
        if flag_timeout != 1:
                if len(buf) != 0:
                        buf_temp = ' '.join(map(lambda c: "%02X" %ord(c), buf))
                        print buf_temp
                else:
                        print 'connection closed'
                        break
        else:
                flag_timeout=0
        if msvcrt.kbhit():        # if a keypress is waiting to be read
                buf = sys.stdin.readline()
                if buf == '\x0A':
                        output_socket.send(buf_output)
                        continue
                try:
                        buf_output = ""
                        buf_temp = buf.split()
                        for c in buf_temp:
                                buf_output += chr(string.atoi('0x'+c, 16))
                        output_socket.send(buf_output)
                except:
                        print 'input format error'
output_socket.close()
sys.exit(0)





在windows下写就是费尽连个select都TMD不通用. 真**......

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:In God We Trust 独立的个人,体赖科学技术工具提供针对个人的产品与服务,是通向幸福的唯一道路 工程师,设计师等可以个人创业的群体,将逐步瓦解官僚体制公司,成为中国中产。(重复劳动,工厂等,将逐步机械化) seacer.co

456

主题

6300

帖子

25

粉丝