<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=API%2Finternet%2Fzh</id>
	<title>API/internet/zh - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=API%2Finternet%2Fzh"/>
	<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=API/internet/zh&amp;action=history"/>
	<updated>2026-08-24T15:14:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=API/internet/zh&amp;diff=1031&amp;oldid=prev</id>
		<title>imported&gt;OCDoc Import: Imported from legacy OpenComputers documentation at ocdoc.cil.li</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=API/internet/zh&amp;diff=1031&amp;oldid=prev"/>
		<updated>2026-08-24T08:08:27Z</updated>

		<summary type="html">&lt;p&gt;Imported from legacy OpenComputers documentation at ocdoc.cil.li&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Internet(因特网) API =&lt;br /&gt;
&lt;br /&gt;
此库封装了因特网卡的功能。 另请参阅[[Component/internet/zh|因特网组件]]以了解更多底层功能（例如查询HTTP可用性以及TCP功能）。&lt;br /&gt;
&lt;br /&gt;
* `internet.request(url: string[, data: string or table[, headers: table[, method: string]]]): function`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;向指定URL发送带有POST数据（如果有）的HTTP请求。如果没有POST数据，则会发送GET请求。  &lt;br /&gt;
POST数据有两种格式可选：字符串和表。如果是字符串，则按原样发送。如果是表，它将被转换为字符串，方式是将各个键作为POST变量的名称，其对应值为该变量的值。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
`method`参数可以显式指定为GET、POST或PUT等值。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;一些样例：  &lt;br /&gt;
* `internet.request(url, {some = &amp;quot;variable&amp;quot;, another = 1})`会发送 `some=variable&amp;amp;another=1`。\\&lt;br /&gt;
* 指定使用PUT的样例：`internet.request(&amp;quot;https://example.com&amp;quot;, &amp;quot;put data&amp;quot;, {}, &amp;quot;PUT&amp;quot;)`。\\&lt;br /&gt;
返回的函数是对结果块的迭代器，使用方式：`for chunk in internet.request(...) do stuff() end`  &lt;br /&gt;
注意，**此方法也支持HTTPS**。所以只需要用`internet.request(&amp;quot;https://example.com&amp;quot;)`即可通过HTTPS发送请求。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `internet.socket(address:string[, port:number]):table`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;使用因特网组件的`connect`方法打开一个TCP套接字，并将其封装为一个表，此表提供了与使用`filesystem.open`打开的文件相同的方法：`read`、`write`与`close`（还有`seek`，但通常会执行失败）。我们更推荐使用`internet.open`函数，此函数会将打开的套接字封装进[[API/buffer/zh|缓冲]]，与 `io.open` 函数封装文件的方式相同。  &lt;br /&gt;
返回的套接字上的读取方法是**非阻塞**的。读取结果会立刻返回，但是若没有内容可读取则可能返回空字符串。写入操作**可能会**被阻塞，直到所有数据均被成功写入，但是**通常而言**会立刻返回。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `internet.open(address:string[, port:number]):table`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;打开一个到指定地址的带缓冲套接字流。此流可读可写，分别使用`s:read`和`s:write`方法——通常可以与`io.open`打开的文件类似对待。通常需要使用`s:setTimeout(seconds)`设定缓冲区读取超时时间，以防止操作被无限期阻塞。  &lt;br /&gt;
返回的缓冲区上的读取操作是**阻塞式**的。读取操作会等待有可读取的数据出现，并将其返回。  &lt;br /&gt;
使用例：&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
```lua local internet = require(&amp;quot;internet&amp;quot;) local handle = internet.open(&amp;quot;example.com&amp;quot;, 1337) local data = handle:read(10) handle:write(&amp;quot;1234&amp;quot;) handle:close() ``` 如果你需要HTTP响应码、消息和响应头，这些数据可从内部对象中取回。该对象被存储于返回对象的元表中。&lt;br /&gt;
&lt;br /&gt;
```lua -- https://github.com/kikito/inspect.lua/blob/master/inspect.lua local inspect = require(&amp;quot;inspect&amp;quot;) local internet = require(&amp;quot;internet&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local handle = internet.request(&amp;quot;https://www.google.com&amp;quot;) local result = &amp;quot;&amp;quot; for chunk in handle do result = result..chunk end -- 输出HTTP响应的body -- print(result)&lt;br /&gt;
&lt;br /&gt;
-- 从句柄处取得元表，其中包含内部的HTTPRequest对象 local mt = getmetatable(handle)&lt;br /&gt;
&lt;br /&gt;
-- response方法取得了HTTP响应码、响应信息和响应头的信息 local code, message, headers = mt.__index.response() print(&amp;quot;code = &amp;quot;..tostring(code)) print(&amp;quot;message = &amp;quot;..tostring(message)) print(inspect(headers)) ```&lt;br /&gt;
&lt;br /&gt;
下面提供了一个简单的IRC聊天机器人样例，机器人会复读你说的话。样例使用了internet(因特网) API提供的套接字。 ```lua --这是一个简易的拆分函数，用于拆分信息 function split(data, pat)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  local ret = {}&lt;br /&gt;
  for i in string.gmatch(data,pat) do&lt;br /&gt;
      table.insert(ret,i)&lt;br /&gt;
  end&lt;br /&gt;
  return ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
end --配置 local nickname = &amp;quot;myircbot&amp;quot; local channel = &amp;quot;#mybotchannel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local net = require(&amp;quot;internet&amp;quot;) local con = net.open(&amp;quot;irc.esper.net&amp;quot;,6667) --在此处设定服务器与端口，将会连接到服务器 if(con) then&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  local line,png,linesplt,msgfrom = &amp;quot;&amp;quot;&lt;br /&gt;
  while(true) do&lt;br /&gt;
      line = con:read() --从套接字中读取一行&lt;br /&gt;
      print(line)&lt;br /&gt;
      linesplt = split(line,&amp;quot;[^:]+&amp;quot;)&lt;br /&gt;
      if #linesplt &amp;gt;= 2 and string.find(linesplt[2], &amp;quot;No Ident response&amp;quot;) ~= nil then&lt;br /&gt;
          print(&amp;quot;JOIN&amp;quot;)&lt;br /&gt;
          con:write(&amp;quot;USER &amp;quot; .. nickname .. &amp;quot; 0 * :&amp;quot; .. nickname .. &amp;quot;\r\n&amp;quot;) --con:write(msg)用于发送信息，con:read()会读取一行&lt;br /&gt;
          con:write(&amp;quot;NICK &amp;quot; .. nickname .. &amp;quot;\r\n&amp;quot;) --对IRC而言，请记住在所有信息末尾追加\r\n&lt;br /&gt;
          con:write(&amp;quot;JOIN :&amp;quot; .. channel .. &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
      elseif linesplt[1] == &amp;quot;PING&amp;quot; or linesplt[1] == &amp;quot;PING &amp;quot; then&lt;br /&gt;
          print(&amp;quot;PING&amp;quot;)&lt;br /&gt;
          png = split(line,&amp;quot;[^:]+&amp;quot;)&lt;br /&gt;
          con:write(&amp;quot;PONG :&amp;quot;..png[#png]..&amp;quot;\r\n&amp;quot;) --对ping作出响应，以保证不会断联&lt;br /&gt;
      elseif string.find(linesplt[1], &amp;quot;PRIVMSG #&amp;quot;) ~= nil then&lt;br /&gt;
          msgfrom = split(linesplt[1],&amp;quot;[^ ]+&amp;quot;)&lt;br /&gt;
          msgfrom = msgfrom[3]&lt;br /&gt;
          con:write(&amp;quot;PRIVMSG &amp;quot;..msgfrom..&amp;quot; :&amp;quot;..linesplt[2]..&amp;quot;\r\n&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  print(&amp;quot;Connection failed.&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
end ```&lt;br /&gt;
&lt;br /&gt;
若要获取更高级的使用例，请查看最新版本的OpenComputers提供的IRC客户端程序：[irc.lua](https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/assets/opencomputers/loot/irc/usr/bin/irc.lua)&lt;br /&gt;
&lt;br /&gt;
== 目录 ==&lt;br /&gt;
&lt;br /&gt;
{{:API/contents/zh}}&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;OCDoc Import</name></author>
	</entry>
</feed>