[嵌入式linux] 发个windows下的tcp调试工具(python代码 69行)

[复制链接]
3536|0
 楼主| sinanjj 发表于 2010-3-28 12:34 | 显示全部楼层 |阅读模式
  1. #!/usr/bin/env python
  2. import sys
  3. import os
  4. import socket
  5. import string
  6. # windows only
  7. import msvcrt

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

  11. try:
  12.         target_ip = socket.gethostbyname(sys.argv[1])
  13. except:
  14.         print "unknown target_ip: %s" %(sys.argv[1])
  15.         sys.exit(0)
  16. try:
  17.         target_port = int(sys.argv[2])
  18. except:
  19.         print "target_port: %s error" %(sys.argv[2])
  20.         sys.exit(0)
  21. if target_port <= 0:
  22.         print "target_port: %s error" %(sys.argv[2])
  23.         sys.exit(0)

  24. output_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  25. try:
  26.         output_socket.connect((target_ip,target_port))
  27. except:
  28.         print 'connect error'
  29.         sys.exit(0)
  30. output_socket.settimeout(0.5)        # non-blocking
  31. buf = ""
  32. buf_output = ""
  33. flag_timeout=0
  34. while 1:
  35.         # socket
  36.         try:
  37.                 buf = output_socket.recv(1024)
  38.         except socket.timeout:
  39.                 flag_timeout=1
  40.                 pass
  41.         except:
  42.                 break
  43.         if flag_timeout != 1:
  44.                 if len(buf) != 0:
  45.                         buf_temp = ' '.join(map(lambda c: "%02X" %ord(c), buf))
  46.                         print buf_temp
  47.                 else:
  48.                         print 'connection closed'
  49.                         break
  50.         else:
  51.                 flag_timeout=0
  52.         if msvcrt.kbhit():        # if a keypress is waiting to be read
  53.                 buf = sys.stdin.readline()
  54.                 if buf == '\x0A':
  55.                         output_socket.send(buf_output)
  56.                         continue
  57.                 try:
  58.                         buf_output = ""
  59.                         buf_temp = buf.split()
  60.                         for c in buf_temp:
  61.                                 buf_output += chr(string.atoi('0x'+c, 16))
  62.                         output_socket.send(buf_output)
  63.                 except:
  64.                         print 'input format error'
  65. output_socket.close()
  66. sys.exit(0)





在windows下写就是费尽连个select都TMD不通用. 真**......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

456

主题

6299

帖子

25

粉丝
快速回复 在线客服 返回列表 返回顶部