判断远端服务器端口是否通
一个简单的判断远端服务器端口是否通的脚本:
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 3Q:wink::wink: #!/usr/bin/env python
#-*- coding:utf-8 -*-
import socket,re,threading
from Tkinter import *
def ConnSocket(entText):
rec=re.compile(r'(^(?:\d{1,3}\.){3}\d{1,3}:\d{1,5}$)')
ref=re.findall(rec,entText.strip())
if len(ref)==0:
v.set(u'输入错误! Tip:<ip:port>')
ent['foreground']='black'
ent['background']='red'
ent.icursor(END)
btn['state']='normal'
else:
entText=entText.split(':')
HOST=entText
PORT=int(entText)
if PORT>65535:
v.set(u'Port[%d] Port<1-65535>'%PORT)
ent['foreground']='black'
ent['background']='red'
ent.icursor(END)
btn['state']='normal'
else:
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(3)
status=s.connect_ex((HOST,PORT))
if status==0:
v.set(u'连接[%s:%d]成功!'%(HOST,PORT))
ent['foreground']='black'
ent['background']='green'
ent.icursor(END)
else:
v.set(u'连接[%s:%d]失败!'%(HOST,PORT))
ent['foreground']='black'
ent['background']='red'
ent.icursor(END)
except Exception as e:
v.set(u'其它错误 %s'%e)
ent['foreground']='black'
ent['background']='red'
finally:
s.close()
btn['state']='normal'
def selectAll(*ignore):
''' Set selection on the whole text '''
ent.selection_range(0, 'end')
# returns 'break' to interrupt default key-bindings
return 'break'
def startThread():
btn['state']='disabled'
entText=ent.get()
t=threading.Thread(target=ConnSocket,args=(entText,))
t.start()
if __name__=='__main__':
root=Tk()
root.title(u'Python端口测试 <by Domenet>')
v=StringVar()
lb=Label(root,text='<IP:PORT>')
root.geometry("330x50")
root.resizable(False, False)
ent=Entry(root,textvariable=v,width=27)
v.set('127.0.0.1:8080')
btn=Button(root,text=u'确定',command=startThread)
ent['selectforeground']='white'
ent['selectbackground']='black'
ent.bind("<Control-a>", selectAll)
lb.pack(side=LEFT,padx=2,pady=5)
ent.pack(side=LEFT,padx=5,pady=5)
btn.pack(side=LEFT,fill=X,padx=2,pady=5)
mainloop()
页:
[1]