国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
多線程超級Ping
http://www.oschina.net/code/snippet_2541400_54096
2016

多線程超級Ping,并且自動(dòng)記錄Ping結(jié)果到ping.txt
 

1. [代碼][Python]代碼    

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#coding=utf-8
#!/usr/bin/python
import os, sys, socket, struct, select, time, threading
if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time
# From /usr/include/linux/icmp.h; your milage may vary.
ICMP_ECHO_REQUEST = 8 # Seems to be the same on Solaris.
global Pingsum   #定義全局列表
def checksum(source_string):
    """
    I'm not too confident that this is right but testing seems
    to suggest that it gives the same answers as in_cksum in ping.c
    """
    sum = 0
    countTo = (len(source_string)/2)*2
    count = 0
    while count<countTo:
        thisVal = ord(source_string[count + 1])*256 + ord(source_string[count])
        sum = sum + thisVal
        sum = sum & 0xffffffff # Necessary?
        count = count + 2
    if countTo<len(source_string):
        sum = sum + ord(source_string[len(source_string) - 1])
        sum = sum & 0xffffffff # Necessary?
    sum = (sum >> 16+  (sum & 0xffff)
    sum = sum + (sum >> 16)
    answer = ~sum
    answer = answer & 0xffff
    # Swap bytes. Bugger me if I know why.
    answer = answer >> 8 | (answer << 8 & 0xff00)
    return answer
def receive_one_ping(my_socket, ID, timeout):
    """
    receive the ping from the socket.
    """
    timeLeft = timeout
    while True:
        startedSelect = default_timer()
        whatReady = select.select([my_socket], [], [], timeLeft)
        howLongInSelect = (default_timer() - startedSelect)
        if whatReady[0] == []: # Timeout
            return
        timeReceived = default_timer()
        recPacket, addr = my_socket.recvfrom(1024)
        icmpHeader = recPacket[20:28]
        type, code, checksum, packetID, sequence = struct.unpack(
            "bbHHh", icmpHeader
        )
        # Filters out the echo request itself.
        # This can be tested by pinging 127.0.0.1
        # You'll see your own request
        if type != 8 and packetID == ID:
            bytesInDouble = struct.calcsize("d")
            timeSent = struct.unpack("d", recPacket[28:28 + bytesInDouble])[0]
            return timeReceived - timeSent
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return
def send_one_ping(my_socket, dest_addr, ID):
    """
    Send one ping to the given >dest_addr<.
    """
    dest_addr  =  socket.gethostbyname(dest_addr)
    # Header is type (8), code (8), checksum (16), id (16), sequence (16)
    my_checksum = 0
    # Make a dummy heder with a 0 checksum.
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
    # bytesInDouble = struct.calcsize("d")
    # data = (192 - bytesInDouble) * "Q"
    data = "Fuck You  " * 8
    data = struct.pack("d", default_timer()) + data
     
    # Calculate the checksum on the data and the dummy header.
    my_checksum = checksum(header + data)
    # Now that we have the right checksum, we put that in. It's just easier
    # to make up a new header than to stuff it into the dummy.
    header = struct.pack(
        "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
    )
    packet = header + data
    my_socket.sendto(packet, (dest_addr, 1)) # Don't know about the 1
def do_one(dest_addr, timeout):
    """
    Returns either the delay (in seconds) or none on timeout.
    """
    icmp = socket.getprotobyname("icmp")
    try:
        my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
    except socket.error, (errno, msg):
        if errno == 1:
            # Operation not permitted
            msg = msg + (
                " - Note that ICMP messages can only be sent from processes"
                " running as root."
            )
            raise socket.error(msg)
        raise # raise the original error
    my_ID = os.getpid() & 0xFFFF
    send_one_ping(my_socket, dest_addr, my_ID)
    delay = receive_one_ping(my_socket, my_ID, timeout)
    my_socket.close()
    return delay
def verbose_ping(dest_addr, count ,timeout = 1): #非默認(rèn)參數(shù)要放在最后
    """
    Send >count< ping to >dest_addr< with the given >timeout< and display
    the result.
    """
    for i in xrange(count):
        #print "ping %s  " % dest_addr,
        try:
            delay = do_one(dest_addr, timeout)
         
        except socket.gaierror, e:
           print "failed. (socket error: '%s')" % e[1],
           break
        if delay  ==  None:
           sys.stdout.write(".")     #timeout
        else:
           delay  =  delay * 1000
           sys.stdout.write("!")
           Pingsum.append(delay)
     
     
     
if __name__ == '__main__':
    while (1):
       Pingsum = [];
       ntime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
       print "\n======================================================="
       print " ",ntime
       dest_addr =     raw_input("  Please input address or name:  ")
       count     = int(raw_input("  Please input counts:           "))
       print "  Will ping:  "+dest_addr+"  %d"%count+"  counts"
       print "========================================================"
       try:
            start=time.clock()
             
            if count<=100:
               m=1
            else:
               m=count//100
            countyu=count%m
            for n in range (m):
              t1=threading.Thread(target=verbose_ping,args=(dest_addr,count//m))
              t1.start()
            t2=threading.Thread(target=verbose_ping,args=(dest_addr,countyu))
            t2.start()
            t1.join()
            t2.join()
            end = time.clock()
            time.sleep(0.3)
            print "\n  Program use time is:%.5fms"%(end-start)
            print "  max is %0.4fms"%max(Pingsum),
            print "  avg is %0.4fms"%(sum(Pingsum)/count),
            print "  min is %0.4fms"%min(Pingsum)
            print "  send is :%d "%count,
            print "  receive is :%s "%(len(Pingsum)),
            print "  loss is: %0.4f"%((1-len(Pingsum)/float(count))*100)+"%"
      
            with open("ping.txt","wb+") as f:
              f.write("Will ping:  "+dest_addr+"  %d"%count+"  counts"+"\r\n")
              for i in range (len(Pingsum)):
                f.write("Seq-%d"%(i+1)+"  Receive "+"%s is: "%dest_addr+" %0.4fms" % (Pingsum[i])+"\r\n");
              f.write("Program use time is:%.5fms"%(end-start)+"\r\n"+"max is %0.4fms"%max(Pingsum)
              +"  avg is %0.4fms"%(sum(Pingsum)/count)+"  min is %0.4fms"%min(Pingsum)+"\r\n");
              f.write("send is: %d"%count+"  receive is :%s "%(len(Pingsum))+"  loss is: %0.4f"%((1-len(Pingsum)/float(count))*100)+"%")
             
             
       except:
            print "  SOMETHING IS ERROR  "

2. [文件] ping.py ~ 7KB     下載(19)     跳至 [1] [2] [全屏預(yù)覽]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#coding=utf-8
#!/usr/bin/python
import os, sys, socket, struct, select, time, threading
if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time
# From /usr/include/linux/icmp.h; your milage may vary.
ICMP_ECHO_REQUEST = 8 # Seems to be the same on Solaris.
global Pingsum   #定義全局列表
def checksum(source_string):
    """
    I'm not too confident that this is right but testing seems
    to suggest that it gives the same answers as in_cksum in ping.c
    """
    sum = 0
    countTo = (len(source_string)/2)*2
    count = 0
    while count<countTo:
        thisVal = ord(source_string[count + 1])*256 + ord(source_string[count])
        sum = sum + thisVal
        sum = sum & 0xffffffff # Necessary?
        count = count + 2
    if countTo<len(source_string):
        sum = sum + ord(source_string[len(source_string) - 1])
        sum = sum & 0xffffffff # Necessary?
    sum = (sum >> 16+  (sum & 0xffff)
    sum = sum + (sum >> 16)
    answer = ~sum
    answer = answer & 0xffff
    # Swap bytes. Bugger me if I know why.
    answer = answer >> 8 | (answer << 8 & 0xff00)
    return answer
def receive_one_ping(my_socket, ID, timeout):
    """
    receive the ping from the socket.
    """
    timeLeft = timeout
    while True:
        startedSelect = default_timer()
        whatReady = select.select([my_socket], [], [], timeLeft)
        howLongInSelect = (default_timer() - startedSelect)
        if whatReady[0] == []: # Timeout
            return
        timeReceived = default_timer()
        recPacket, addr = my_socket.recvfrom(1024)
        icmpHeader = recPacket[20:28]
        type, code, checksum, packetID, sequence = struct.unpack(
            "bbHHh", icmpHeader
        )
        # Filters out the echo request itself.
        # This can be tested by pinging 127.0.0.1
        # You'll see your own request
        if type != 8 and packetID == ID:
            bytesInDouble = struct.calcsize("d")
            timeSent = struct.unpack("d", recPacket[28:28 + bytesInDouble])[0]
            return timeReceived - timeSent
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return
def send_one_ping(my_socket, dest_addr, ID):
    """
    Send one ping to the given >dest_addr<.
    """
    dest_addr  =  socket.gethostbyname(dest_addr)
    # Header is type (8), code (8), checksum (16), id (16), sequence (16)
    my_checksum = 0
    # Make a dummy heder with a 0 checksum.
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
    # bytesInDouble = struct.calcsize("d")
    # data = (192 - bytesInDouble) * "Q"
    data = "Fuck You  " * 8
    data = struct.pack("d", default_timer()) + data
     
    # Calculate the checksum on the data and the dummy header.
    my_checksum = checksum(header + data)
    # Now that we have the right checksum, we put that in. It's just easier
    # to make up a new header than to stuff it into the dummy.
    header = struct.pack(
        "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
    )
    packet = header + data
    my_socket.sendto(packet, (dest_addr, 1)) # Don't know about the 1
def do_one(dest_addr, timeout):
    """
    Returns either the delay (in seconds) or none on timeout.
    """
    icmp = socket.getprotobyname("icmp")
    try:
        my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
    except socket.error, (errno, msg):
        if errno == 1:
            # Operation not permitted
            msg = msg + (
                " - Note that ICMP messages can only be sent from processes"
                " running as root."
            )
            raise socket.error(msg)
        raise # raise the original error
    my_ID = os.getpid() & 0xFFFF
    send_one_ping(my_socket, dest_addr, my_ID)
    delay = receive_one_ping(my_socket, my_ID, timeout)
    my_socket.close()
    return delay
def verbose_ping(dest_addr, count ,timeout = 1): #非默認(rèn)參數(shù)要放在最后
    """
    Send >count< ping to >dest_addr< with the given >timeout< and display
    the result.
    """
    for i in xrange(count):
        #print "ping %s  " % dest_addr,
        try:
            delay = do_one(dest_addr, timeout)
         
        except socket.gaierror, e:
           print "failed. (socket error: '%s')" % e[1],
           break
        if delay  ==  None:
           sys.stdout.write(".")     #timeout
        else:
           delay  =  delay * 1000
           sys.stdout.write("!")
           Pingsum.append(delay)
     
     
     
if __name__ == '__main__':
    while (1):
       Pingsum = [];
       ntime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
       print "\n======================================================="
       print " ",ntime
       dest_addr =     raw_input("  Please input address or name:  ")
       count     = int(raw_input("  Please input counts:           "))
       print "  Will ping:  "+dest_addr+"  %d"%count+"  counts"
       print "========================================================"
       try:
            start=time.clock()
             
            if count<=100:
               m=1
            else:
               m=count//100
            countyu=count%m
            for n in range (m):
              t1=threading.Thread(target=verbose_ping,args=(dest_addr,count//m))
              t1.start()
            t2=threading.Thread(target=verbose_ping,args=(dest_addr,countyu))
            t2.start()
            t1.join()
            t2.join()
            end = time.clock()
            time.sleep(0.3)
            print "\n  Program use time is:%.5fms"%(end-start)
            print "  max is %0.4fms"%max(Pingsum),
            print "  avg is %0.4fms"%(sum(Pingsum)/count),
            print "  min is %0.4fms"%min(Pingsum)
            print "  send is :%d "%count,
            print "  receive is :%s "%(len(Pingsum)),
            print "  loss is: %0.4f"%((1-len(Pingsum)/float(count))*100)+"%"
      
            with open("ping.txt","wb+") as f:
              f.write("Will ping:  "+dest_addr+"  %d"%count+"  counts"+"\r\n")
              for i in range (len(Pingsum)):
                f.write("Seq-%d"%(i+1)+"  Receive "+"%s is: "%dest_addr+" %0.4fms" % (Pingsum[i])+"\r\n");
              f.write("Program use time is:%.5fms"%(end-start)+"\r\n"+"max is %0.4fms"%max(Pingsum)
              +"  avg is %0.4fms"%(sum(Pingsum)/count)+"  min is %0.4fms"%min(Pingsum)+"\r\n");
              f.write("send is: %d"%count+"  receive is :%s "%(len(Pingsum))+"  loss is: %0.4f"%((1-len(Pingsum)/float(count))*100)+"%")
             
             
       except:
            print "  SOMETHING IS ERROR  "

 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C++中實(shí)現(xiàn)ping功能2
Linux編程之ICMP洪水攻擊
ping源代碼完全解析
VB 判斷IP能否ping通
ping命令原代碼
linux下libpcap的使用(抓包小程序)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服