![]() |
豪气的机器人 · el-checkbox出现的传值问题以及ch ...· 1 年前 · |
![]() |
温暖的键盘 · QT-QGraphicsView实现图片放大 ...· 2 年前 · |
![]() |
买醉的石榴 · 在Pyspark中,当一个条件发生时,计算两 ...· 2 年前 · |
Ruby提供了两个级别访问网络的服务,在底层你可以访问操作系统,它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持。
Ruby 统一支持应用程序的网络协议,如FTP、HTTP等。
不管是高层的还是底层的。ruby提供了一些基本类,让你可以使用TCP,UDP,SOCKS等很多协议交互,而不必拘泥在网络层。这些类也提供了辅助类,让你可以轻松的对服务器进行读写。接下来就让我们来学习如何进行 Ruby Socket 编程
Sockets 词汇解析:
选项描述 domain指明所使用的协议族,通常为 PF_INET, PF_UNIX, PF_X25, 等等。 type指定socket的类型:SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议 protocol通常赋值0。 hostname网络接口的标识符:以下我们通过给定的主机和端口编写了一个简单的客户端实例,Ruby TCPSocket 类提供了 open 方法来打开一个 socket。
TCPSocket.open(hosname, port ) 打开一个 TCP 连接。
一旦你打开一个 Socket 连接,你可以像 IO 对象一样读取它,完成后,你需要像关闭文件一样关闭该连接。
以下实例演示了如何连接到一个指定的主机,并从 socket 中读取数据,最后关闭socket:
Ruby 中可以使用 TCPServer 类来写个简单的服务。TCPServer 对象是 TCPSocket 的工厂对象。
现在我们使用 TCPServer.open(hostname, port) 来创建一个 TCPServer 对象。
接下来调用 TCPServer 的 accept 方法,该方法会等到一个客户端连接到指定的端口,然后返回一个的TCPSocket对象,表示连接到该客户端。
现在,在服务器上运行以上代码,查看效果。
互联网上,大多服务都有大量的客户端连接。
Ruby的Thread类可以很容易地创建多线程服务,一个线程执行客户端的连接,而主线程在等待更多的连接。
我们可以使用socket库来实现任何的 Internet 协议。以下代码展示了如何获取网页的内容:
要实现一个类似 web 的客户端,你可以使用为 HTTP 预先构建的库如Net::HTTP。
以下代码与先前代码是等效的:以上我们只是简单的为大家介绍 Ruby 中socket的应用,更多文档请查看: Ruby Socket 库和类方法