Ruby Socket 编程2025年3月17日 | 阅读 3 分钟 Socket 是网络通信通道的端点,客户端和服务器相互通信。它们可以在同一台机器或不同的机器上进行通信。 Socket 类型
Socket 有两个级别,高级和低级。低级访问允许您处理系统支持的 socket。它允许实现无连接和面向连接的协议。高级访问允许您处理网络协议,如 HTTP 和 FTP。 示例 1server1.rb 在上面的代码中,需要包含预安装的 socket 模块。 我们在系统上使用 2017 端口。 您可以使用任何端口。 启动一个循环,接受所有连接到端口 2017 的连接,并通过 socket 网络将数据发送给客户端。 最后,关闭 socket。 client1.rb 在上面的代码中,需要包含预安装的 socket 模块。 创建一个 socket 并将其连接到端口 2017。 创建一个 while 循环来获取通过 socket 发送的所有信息。 最后,关闭 socket。 输出 转到终端,更改到您保存了上述两个文件的目录。 我们将其保存在我们的桌面目录中。 现在要执行这些文件,我们需要具有所需的权限。 在终端中运行以下命令, 此命令将使此目录中存在的所有 Ruby 文件可执行。 ![]() 现在打开两个终端。 在第一个终端中执行服务器脚本,在第二个终端中执行客户端脚本,使用以下命令。 ![]() 多个客户端 socket 编程对于多个客户端的 socket 编程,需要一个循环和一些线程来接受和响应多个客户端。 示例 2server3.rb 在上面的代码中,服务器将具有与客户端相同的端口以建立连接。 这里我们需要每个连接用户一个线程来处理所有可能的用户。 该run方法验证输入的名称是否唯一。 如果用户名已存在,则连接将被终止,否则将建立连接。 该listen_user_messages方法监听用户消息并将它们发送给所有用户。 client3.rb 在上面的代码中,创建了Client类来处理用户。 在send和listen方法中创建了两个线程,以便我们可以同时读/写消息。 输出 下面快照显示了两个客户端之间的聊天。 ![]() 服务器终端上的输出如下所示。 ![]() 下一个主题Ruby 多线程 |
我们请求您订阅我们的新闻通讯以获取最新更新。