MIRC 指令碼/高階/套接字
第 ?章: 套接字
| ← 代理 | mIRC 指令碼 | {{{next}}} |
從頭開始: 熟悉 mIRC | 入門
學習基礎知識: 分支和迴圈 | 定時器 | 使用者等級 | 文字匹配 | 檔案處理 | 雜湊表 | 對話方塊
高階主題: 自定義視窗 | 代理 | 套接字
計劃: DLL | COM 物件 | 錯誤檢查和處理
套接字是用於處理 IP 相關連線的程式設計介面。套接字在使用時非常有用,mIRC 的套接字處理程式可以做很多事情,例如從網站獲取資訊或檔案、連線到 IRC 網路或使用其他協議。
傳輸控制協議,也稱為TCP或TCP/IP,是一種網際網路/網路協議,它依賴於伺服器和客戶端的存在。在這種協議中,連線必須建立才能被認為是開啟的。這是透過稱為3 次握手的方法完成的。當在客戶端和伺服器之間建立連線時,資訊可以在兩個節點之間自由傳輸。
在此上下文中的伺服器是一個程式或指令碼,它負責接受和管理連線,而客戶端是一個連線到伺服器的程式或指令碼。伺服器和客戶端最常見的例子是我們每天瀏覽的網站。我們的瀏覽器充當客戶端,它連線到您輸入的地址處的伺服器,並將資訊下載到螢幕上。
伺服器和客戶端都可以使用 mIRC 的套接字編寫
格式: /sockopen [-de] [bindip] <name> <address> <port> 例如: /sockopen Getwebpage www.comcity.com 80
此命令嘗試開啟到指定 IP 地址或主機名和埠的伺服器的連線。如果沒有找到在該位置/埠執行的伺服器,則連線將失敗。
<name> 是您提供的用於描述連線的名稱。將來將使用此名稱來引用此連線。<address> 是您要連線的計算機的 IP 地址或主機名。<port> 是您要連線到遠端機器上的服務的埠號。
-d 開關表示您指定了 IP 地址作為繫結地址。-e 開關建立 SSL 連線。
格式: On *:sockopen:<name>:{ [commands] } 例如: On *:sockopen:Getwebpage:{ echo -s 連線到網頁成功! }
這是在使用 /sockopen 命令成功開啟套接字時觸發的事件。
<name> 可以是萬用字元。
格式: /sockclose <name> 例如: /sockclose Getwebpage
此命令根據其引用名稱關閉開啟的連線。如果套接字未開啟,則此命令不會執行任何操作。
格式: On *:sockclose:<name>:{ [commands] } 例如: On *:sockclose:Getwebpage:{ echo -s 遠端已關閉連線。 }
當遠端節點關閉基於套接字的連線時,會觸發此事件。當使用 /sockclose 本地關閉套接字時,此事件不會觸發。
<name> 可以是萬用字元。
格式: /socklisten [-d] [bindip] <name> [port] 例如: /socklisten Webserver 80
此命令偵聽來自指定埠上的客戶端節點的連線。如果沒有指定埠,則會隨機選擇 DCC 選項範圍內的一個埠。
<name> 是您要為該連線指定的參考名稱。[port] 是一個可選引數,用於設定伺服器執行的埠。
格式:On *:socklisten:<name>:{ [commands] } 例子:On *:socklisten:Webserver:{ sockaccept Webcon $+ $rand(1,99999) }
這是一個事件,當節點嘗試連線到您在執行服務的埠上的伺服器時觸發。此事件的主要目標是接受(或拒絕)傳入連線。
<name> 可以是萬用字元。
格式:/sockaccept <name> 例子:/sockaccept Helloworld 例子 2:/sockaccept Webcon $+ $rand(1,99999)
此命令接受來自 On socklisten 事件的連線嘗試。
<name> 是您要為該連線指定的參考名稱。
如果接受多個連線,建議使用 $rand() 識別符號分配隨機數,以便可以一次建立多個連線。這需要在許多事件中使用萬用字元。
格式:/sockwrite [-tnb] <name> [numbytes] <text|%var|&binvar> 例子:/sockwrite -n Getwebpage GET /websiteos/example_of_a_simple_html_page.htm HTTP/1.1 例子 2:/sockwrite Helloworld &sendfile
此命令將文字或二進位制資料傳送到遠端連線。
<name> 是您要傳送資料的連線的參考名稱。[numbytes] 是一個可選引數,與 -b 開關一起使用,表示您指定要傳送的位元組數。<text|%var|&binvar> 描述要傳送到遠端節點的資料。
-t 開關強制將二進位制變數中包含的資料解釋為普通文字,而不是二進位制資料。-n 開關在資料末尾添加回車換行符 ($crlf)。-b 開關表示您指定了 [numbytes] 引數。
格式:on *:sockwrite:<name>:{ [commands] } 例子:on *:sockwrite:Helloworld:{ echo -s Done sending data to socket }
當 mIRC 完成將指定資料傳送到指定連線時,此事件將觸發。如果在傳送之前添加了更多資料,它將新增到資料佇列中。
<name> 可以是萬用字元。
格式:/sockread [-fn] [numbytes] <%var|&binvar> 例子:/sockread %chatline 例子 2:/sockread &filepart
此命令讀取已透過連線接收的資料。它始終在 On sockread 事件中執行。
[numbytes] 是一個可選引數,描述從二進位制變數中讀取的位元組數。如果未指定,它預設為 4096。<%var|&binvar> 是一個變數,用於儲存從套接字讀取的資料。
-f 開關強制 mIRC 處理來自 sockread 事件的資料,即使它沒有以 $crlf 結尾。-n 開關允許您將以 $crlf 結尾的行新增到二進位制變數中。
格式:On *:sockread:<name>:{ [commands] } 例子:on *:sockread:Getwebpage:{ sockread %htmllines | echo -s HTML of page: %htmllines }
當從套接字讀取資料時,此事件將觸發。它幾乎總是封裝 sockread 命令。
<name> 可以是萬用字元。