跳轉至內容

MIRC 指令碼/高階/套接字

來自華夏公益教科書,自由的教科書


第 ?章: 套接字 已開發 25% 於 2008 年 11 月 23 日 14:34 (UTC)


代理 mIRC 指令碼 已開發 25% 於 2008 年 3 月 13 日 {{{next}}}

從頭開始: 熟悉 mIRC | 入門
學習基礎知識: 分支和迴圈 | 定時器 | 使用者等級 | 文字匹配 | 檔案處理 | 雜湊表 | 對話方塊
高階主題: 自定義視窗 | 代理 | 套接字
計劃: DLL | COM 物件 | 錯誤檢查和處理



mIRC 套接字

[編輯 | 編輯原始碼]

套接字是用於處理 IP 相關連線的程式設計介面。套接字在使用時非常有用,mIRC 的套接字處理程式可以做很多事情,例如從網站獲取資訊或檔案、連線到 IRC 網路或使用其他協議。

傳輸控制協議 (TCP)

[編輯 | 編輯原始碼]

傳輸控制協議,也稱為TCPTCP/IP,是一種網際網路/網路協議,它依賴於伺服器和客戶端的存在。在這種協議中,連線必須建立才能被認為是開啟的。這是透過稱為3 次握手的方法完成的。當在客戶端和伺服器之間建立連線時,資訊可以在兩個節點之間自由傳輸。

伺服器和客戶端

[編輯 | 編輯原始碼]

在此上下文中的伺服器是一個程式或指令碼,它負責接受和管理連線,而客戶端是一個連線到伺服器的程式或指令碼。伺服器和客戶端最常見的例子是我們每天瀏覽的網站。我們的瀏覽器充當客戶端,它連線到您輸入的地址處的伺服器,並將資訊下載到螢幕上。

伺服器和客戶端都可以使用 mIRC 的套接字編寫

在 mIRC 中的客戶端指令碼

[編輯 | 編輯原始碼]

格式: /sockopen [-de] [bindip] <name> <address> <port> 例如: /sockopen Getwebpage www.comcity.com 80

此命令嘗試開啟到指定 IP 地址或主機名和埠的伺服器的連線。如果沒有找到在該位置/埠執行的伺服器,則連線將失敗。

<name> 是您提供的用於描述連線的名稱。將來將使用此名稱來引用此連線。<address> 是您要連線的計算機的 IP 地址或主機名。<port> 是您要連線到遠端機器上的服務的埠號。

-d 開關表示您指定了 IP 地址作為繫結地址。-e 開關建立 SSL 連線。

On sockopen

[編輯 | 編輯原始碼]

格式: On *:sockopen:<name>:{ [commands] } 例如: On *:sockopen:Getwebpage:{ echo -s 連線到網頁成功! }

這是在使用 /sockopen 命令成功開啟套接字時觸發的事件。

<name> 可以是萬用字元。

Sockclose

[編輯 | 編輯原始碼]

格式: /sockclose <name> 例如: /sockclose Getwebpage

此命令根據其引用名稱關閉開啟的連線。如果套接字未開啟,則此命令不會執行任何操作。

On sockclose

[編輯 | 編輯原始碼]

格式: On *:sockclose:<name>:{ [commands] } 例如: On *:sockclose:Getwebpage:{ echo -s 遠端已關閉連線。 }

當遠端節點關閉基於套接字的連線時,會觸發此事件。當使用 /sockclose 本地關閉套接字時,此事件不會觸發。

<name> 可以是萬用字元。

在 mIRC 中的伺服器指令碼

[編輯 | 編輯原始碼]

Socklisten

[編輯 | 編輯原始碼]

格式: /socklisten [-d] [bindip] <name> [port] 例如: /socklisten Webserver 80

此命令偵聽來自指定埠上的客戶端節點的連線。如果沒有指定埠,則會隨機選擇 DCC 選項範圍內的一個埠。

<name> 是您要為該連線指定的參考名稱。[port] 是一個可選引數,用於設定伺服器執行的埠。

在 socklisten 上

[編輯 | 編輯原始碼]

格式:On *:socklisten:<name>:{ [commands] } 例子:On *:socklisten:Webserver:{ sockaccept Webcon $+ $rand(1,99999) }

這是一個事件,當節點嘗試連線到您在執行服務的埠上的伺服器時觸發。此事件的主要目標是接受(或拒絕)傳入連線。

<name> 可以是萬用字元。

Sockaccept

[編輯 | 編輯原始碼]

格式:/sockaccept <name> 例子:/sockaccept Helloworld 例子 2:/sockaccept Webcon $+ $rand(1,99999)

此命令接受來自 On socklisten 事件的連線嘗試。

<name> 是您要為該連線指定的參考名稱。

如果接受多個連線,建議使用 $rand() 識別符號分配隨機數,以便可以一次建立多個連線。這需要在許多事件中使用萬用字元。

讀取和寫入資訊

[編輯 | 編輯原始碼]

Sockwrite

[編輯 | 編輯原始碼]

格式:/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] 引數。

在 sockwrite 上

[編輯 | 編輯原始碼]

格式: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 結尾的行新增到二進位制變數中。

在 sockread 上

[編輯 | 編輯原始碼]

格式:On *:sockread:<name>:{ [commands] } 例子:on *:sockread:Getwebpage:{ sockread %htmllines | echo -s HTML of page: %htmllines }

當從套接字讀取資料時,此事件將觸發。它幾乎總是封裝 sockread 命令。

<name> 可以是萬用字元。

華夏公益教科書