使用socket主要是判斷是否埠能否聯通
socket《詳情參考》
1.socket.connect() 檢測埠,若埠不能聯通,則會丟擲異常,若無異常,則埠存活,使用try-except異常捕獲處理,進而進行埠掃瞄
這裡將使用100個執行緒,每個埠連線都要檢查是否超過65535
#coding=utf8
import socket
import threading
defscan
(host,cport):
for x in range(660):
p=x+660*cport
try:
if p < 65535:
s = socket.socket(socket.af_inet, socket.sock_stream)
s.connect((host, p))
s.settimeout(0.1)
print
"local open port : %d"%p
s.close()
else :
break
except exception:
pass
list =
for i in range(100):
t = threading.thread(target=scan,args=('localhost',i,))
t.start()
for threadinglist in list:
threadinglist.join()
輸出:
local
open port : 22
local
open port : 111
local
open port : 34172
local
open port : 49716
local
open port : 51078
2.socket.connect_ex() 若聯通則返回為0,否則返回為非0
依據connect_ex返回值判斷埠是否存活
import socket
import threading
from queue import queue
defscan
(port):
s = socket.socket()
s.settimeout(1)
if s.connect_ex(('localhost', port)) == 0:
print
"local open port : %d"%port
s.close()
defworker
():while
not q.empty():
port = q.get()
try:
scan(port)
finally:
q.task_done()
if __name__ == '__main__':
q = queue()
map(q.put,xrange(1,65535))
threads = [threading.thread(target=worker) for i in xrange(100)]
map(lambda x:x.start(),threads)
q.join()
輸出:
local
open port : 22
local
open port : 25
local
open port : 111
local
open port : 631
local
open port : 35156
local
open port : 38929
local
open port : 51078
python實現socket收發資料的實現
1.建立套接字 2.使用套接字收 發資料 3.關閉套接字 import socket def main 建立套接字 udp socket socket.socket socket.af inet,socket.sock dgram 繫結資訊 這裡繫結的資料是乙個元組 udp socket.bind ...
socket 使用select 非阻塞方式實現
select函式原型如下 int select int maxfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout select系統呼叫是用來讓我們的程式監視多個檔案控制代碼 socket 控制代碼 的狀...
python中Socket的使用
前一段時間學習python網路程式設計,完成簡單的通過python實現網路通訊的功能。現在,將python中socket 通訊的基本實現過程做乙個記錄備份.python 中的socket通訊較為簡單,僅需要幾行 就可實現。和一般的網路通訊一樣,通訊方式分為udp和tcp兩種方式,兩種方式的處理也略有...