的TCP / IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I / O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 Socket建立为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:int socket(int domain , int type , int protocol);domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP / IP协议族);type参数指定socket的类型:SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值 " 0 " 。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。 Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上 " 建立一个Socket " 意味着为一个Socket数据结构分配存储空间。 Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 socket在测量软件中的使用也很广泛
让我们以一个简单的例子开始 --- 一个接收输入字符串 , 处理并返回这个字符串到客户端的TCP服务 . 下面是相应的代码 :

PHP 代码 :

--------------------------------------------------------------------------------
- <?
- // 设置一些基本的变量
- $host = "192.168.1.99";
- $port = 1234;
- // 设置超时时间
- set_time_limit(0);
- // 创建一个Socket
- $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
- socket\n");
- //绑定Socket到端口
- $result = socket_bind($socket, $host, $port) or die("Could not bind to
- socket\n");
- // 开始监听链接
- $result = socket_listen($socket, 3) or die("Could not set up socket
- listener\n");
- // accept incoming connections
- // 另一个Socket来处理通信
- $spawn = socket_accept($socket) or die("Could not accept incoming
- connection\n");
- // 获得客户端的输入
- $input = socket_read($spawn, 1024) or die("Could not read input\n");
- // 清空输入字符串
- $input = trim($input);
- //处理客户端输入并返回结果
- $output = strrev($input) . "\n";
- socket_write($spawn, $output, strlen ($output)) or die("Could not write
- output\n");
- // 关闭sockets
- socket_close($spawn);
- socket_close($socket);
- ?>
复制代码

--------------------------------------------------------------------------------

下面是其每
|