perl_IO::Socket模块简单实例

简介:

socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。

下面这个是一个小例子:

 服务器端:

#!/usr/bin/perl -w

use strict;
use IO::Socket;

my $server_port = 9999;
my $client;

my $server = IO::Socket::INET->new(LocalPort => $server_port,
                    Type      => SOCK_STREAM,
                    Reuse     => 1,
                    Listen    => 10) or die "Couldn't be a tcp server on port $server_port: $!\n";

while ( $client = $server->accept()) {
         print "$client, it is ok\n";
    }

close($server);

客户端:

#!/usr/bin/perl -w

use strict;
use IO::Socket;

my $remote_host = '192.168.199.129';
my $remote_port = 9999;

my $socket = IO::Socket::INET->new(PeerAddr  => $remote_host,
                                   PeerPort  => $remote_port,
                                   Proto     => "tcp",
                   Type      => SOCK_STREAM ) or die "Couldn't connect to $remote_host, $remote_port: $!\n";
     print "$socket,\t I'm is client\n"; 


my $answer = <$socket>;

close($socket);

先执行服务器端,然后执行客户端,发现两台机器的9999都开了。

具体深入以后在研究



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1165917

相关文章
|
4天前
|
网络协议 Python
python中socket模块的导入和使用基础
【4月更文挑战第3天】Python的`socket`模块是网络编程的基础,用于创建套接字、绑定地址和端口、监听连接及数据传输。首先,使用`import socket`导入模块。接着,通过`socket.socket()`创建套接字,指定地址族(如`AF_INET`)和类型(如`SOCK_STREAM`)。然后,使用`bind()`方法绑定地址和端口,`listen()`方法监听连接。服务器端通过`accept()`接受连接,`recv()`接收数据,`send()`发送响应。客户端则用`connect()`连接服务器,`send()`发送数据,`recv()`接收响应。
|
4天前
|
缓存 Linux
Linux 文件IO简单实例
Linux 文件IO简单实例
15 1
|
SQL 监控 关系型数据库
【巡检问题分析与最佳实践】RDS PostgreSQL 实例IO高问题
实例的磁盘IO负载是RDS PostgreSQL用户日常应重点关注的监控项之一,如果磁盘IO压力过大,很容易导致数据库性能问题。
【巡检问题分析与最佳实践】RDS PostgreSQL 实例IO高问题
|
2天前
|
移动开发 前端开发 JavaScript
uniapp中IO模块(管理本地文件系统)的常用功能封装
uniapp中IO模块(管理本地文件系统)的常用功能封装
|
4天前
|
数据采集 人工智能 异构计算
LabVIEW编程LabVIEW开发 PXI-6259多功能IO模块 例程与相关资料
LabVIEW编程LabVIEW开发 PXI-6259多功能IO模块 例程与相关资料
10 0
|
4天前
|
存储 Java 数据处理
Java IO 流在数据处理中的应用实例
【4月更文挑战第4天】Java IO 流在数据处理中扮演关键角色,如在学生信息管理系统中读取和保存信息。通过FileInputStream和FileWriter进行文件读写,实现数据的持久化。BufferedReader和BufferedWriter提供缓冲提升性能,DataInputStream和DataOutputStream处理基本数据类型。流还可用于文件复制、编码转换及数据传输,确保高效稳定的数据处理。理解并选择合适流类型是实现可靠程序的关键。
|
4天前
|
调度 Python
如何在Python中实现异步IO,以及asyncio模块的使用?
Python的`asyncio`模块支持异步I/O,通过定义`async`函数(coroutines)、创建事件循环、调度任务来实现。
21 3
|
4天前
|
Java 数据处理
IO实例一
IO实例一
29 5
|
4天前
|
Java
IO实例二
IO实例二
19 3
|
4天前
|
Rust
【一起学Rust · 项目实战】命令行IO项目minigrep——重构优化模块和错误处理
【一起学Rust · 项目实战】命令行IO项目minigrep——重构优化模块和错误处理
41 0