当前位置:企业首页 >> 新闻中心

分享到: 更多

利用socket技术完成c/s通信

发布时间:2010-11-14 11:22 点击量:

 

利用socket技术完成c/s通信
 
socket服务器端函数

函数与变量名称
描述
Getprotobyname()
获得使用协议名称的协议号
socket_create()
通过指定域名(AF_INET),指定socket类型(SOCK_STREAM使用tcp协议)来完成实例化socket资源对象,该对象是下面对应socket操作的必须参数
socket_bind()
将socket_create()创建的对象绑定主机名称和地址,只有这样客户端才可以进行socket连接
socket_listen()
监听客户端的socket请求,函数有两个参数,一个是socket_create()创建的对象,另一个是允许客户端请求排队的数目
socket_accept()
当客户端发送请求时,该函数可以调用socket的子函数进行与客户端的会话处理,函数的参数是socket_create()创建的对象
Socket_write()
将服务器处理的数据发送到客户端
Socket_close()
关闭当前的socket

Server.php
<?php
// 设置主机名称和端口号
$host = "127.0.0.1";
$port = 1234567;
// 设置超时时间
set_time_limit(0);
// 创建Socket实例
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol)or die("Could not create
socket\n");
//绑定Socket到端口
socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// 开始监听链接
socket_listen($socket) or die("Could not set up socket listener\n");
//编写服务端发送客户端的消息
$info = "欢迎光临三扬科技!\n\r";
while(true)
{
    $conn = socket_accept($socket);
    printf("Socket 连接成功!\r\n");
    if($info != "")
    {
        printf("向客户端发送消息.....\r\n");
        echo @socket_write($conn, $info, strlen($info))."\n\r";
        printf("Socket发送的信息是:".$info."\r\n");
    }
    else
    {
        printf("没有可以发送的消息!\r\n");
    }   
    socket_close($conn);
    printf("关闭 socket服务!\r\n\r\n");
}
socket_close($socket);
?>
 
注意:
socket服务器应该使用cmd命令行的php.exe进行调用,不要直接请求服务器的页面,否则不能正确的启动服务器端的socket服务
 
socket建立客户端
socket客户端函数介绍
 

函数名称
描述
socket_create
创建socket资源对象,使用方法同服务器端的socket_create()
socket_connect
使用socket_create()创建的资源对象,连接服务器端,须要为此函数提供socket_create()函数创建的资源对象服务器端主机名称,服务器主机端口号
socket_read
输出服务器端传递给客户端的应答信息,通过限定每次读入的字节数目进行输出,须要注意的是函数必须使用”\n”,”\t”,”\0”结束字符读取

 
Client.php
<?php
//服务器名称和端口
$hostAddress ="127.0.0.1";
$hostPort =1234567;
//创建Socket实例
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//连接服务器
$conn = socket_connect($socket,$hostAddress, $hostPort);
 
if ($conn) {
       echo "服务器连接成功,以下是服务器应答信息。。。";
       while($info = socket_read($socket, 1024, PHP_BINARY_READ))
{
    echo('<p>服务器说 :' .$info. '</p>');
}
}else{
       echo "服务器连接失败,";
}
socket_close($socket);
?>
 
 
演示SOCKET功能具体步骤:(CMD环境)
(1)       SOCKET服务器端:使用PHP。EXE启动SOCKET服务器文件
C:\>appserv\php5\php.exe c:\appserv\www\socket\server.php
 
(2)SOCKET客户端:在客户端使用浏览器打开客户端页面,也可以使用命令行通过
telnet 主机地址 端口号 来运行
 
如果是浏览器:在地址栏直接输入http://localhost/socket/client.php即可
(责任编辑:admin)

上一篇:php用户登录代码


下一篇:没有了

案例展示图

网  址:

www.chinaitweb.com

客服热线:13391795197[可发短信注明来意]

客服热线:13717978877[可发短信注明来意]

qq:802041000