免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 83020 | 回复: 3
打印 上一主题 下一主题

判断远端服务器端口是否通 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-23 19:05 |只看该作者 |倒序浏览

一个简单的判断远端服务器端口是否通的脚本:
import socket
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
try:
    sk.connect(('192.168.0.1',21))
    print 'Server port 21 OK!'
except Exception:
    print 'Server port 21 not connect!'
sk.close()


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93470/showart_2185372.html

论坛徽章:
0
2 [报告]
发表于 2012-09-03 10:36 |只看该作者
3Q:wink::wink:

论坛徽章:
0
3 [报告]
发表于 2016-10-09 20:38 |只看该作者
  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-
  3. import socket,re,threading
  4. from Tkinter import *
  5. def ConnSocket(entText):   
  6.     rec=re.compile(r'(^(?:\d{1,3}\.){3}\d{1,3}:\d{1,5}$)')
  7.     ref=re.findall(rec,entText.strip())
  8.     if len(ref)==0:
  9.         v.set(u'输入错误! Tip:<ip:port>')
  10.         ent['foreground']='black'
  11.         ent['background']='red'
  12.         ent.icursor(END)
  13.         btn['state']='normal'
  14.     else:
  15.         entText=entText.split(':')
  16.         HOST=entText[0]
  17.         PORT=int(entText[1])
  18.         if PORT>65535:
  19.             v.set(u'Port[%d] Port<1-65535>'%PORT)
  20.             ent['foreground']='black'
  21.             ent['background']='red'
  22.             ent.icursor(END)
  23.             btn['state']='normal'
  24.         else:
  25.             try:
  26.                 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  27.                 s.settimeout(3)
  28.                 status=s.connect_ex((HOST,PORT))
  29.                 if status==0:
  30.                     v.set(u'连接[%s:%d]成功!'%(HOST,PORT))
  31.                     ent['foreground']='black'
  32.                     ent['background']='green'
  33.                     ent.icursor(END)
  34.                 else:
  35.                     v.set(u'连接[%s:%d]失败!'%(HOST,PORT))
  36.                     ent['foreground']='black'
  37.                     ent['background']='red'
  38.                     ent.icursor(END)
  39.             except Exception as e:
  40.                 v.set(u'其它错误 %s'%e)
  41.                 ent['foreground']='black'
  42.                 ent['background']='red'
  43.             finally:
  44.                 s.close()
  45.                 btn['state']='normal'
  46. def selectAll(*ignore):
  47.     ''' Set selection on the whole text '''
  48.     ent.selection_range(0, 'end')
  49.     # returns 'break' to interrupt default key-bindings
  50.     return 'break'
  51. def startThread():
  52.     btn['state']='disabled'
  53.     entText=ent.get()
  54.     t=threading.Thread(target=ConnSocket,args=(entText,))
  55.     t.start()
  56. if __name__=='__main__':
  57.     root=Tk()
  58.     root.title(u'Python端口测试 <by Domenet>')
  59.     v=StringVar()
  60.     lb=Label(root,text='<IP:PORT>')
  61.     root.geometry("330x50")
  62.     root.resizable(False, False)
  63.     ent=Entry(root,textvariable=v,width=27)
  64.     v.set('127.0.0.1:8080')
  65.     btn=Button(root,text=u'确  定',command=startThread)
  66.     ent['selectforeground']='white'
  67.     ent['selectbackground']='black'
  68.     ent.bind("<Control-a>", selectAll)
  69.     lb.pack(side=LEFT,padx=2,pady=5)
  70.     ent.pack(side=LEFT,padx=5,pady=5)
  71.     btn.pack(side=LEFT,fill=X,padx=2,pady=5)
  72.     mainloop()
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP