跳转至内容

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> 可以是通配符。

华夏公益教科书