当前位置:  编程语言>php

php实现socket实现客户端和服务端数据通信源代码

 
    发布时间:2013-9-24  


    本文导语:  创建一个Socket,你需要三个参数:协议簇、通信类型(数据流,数据报等等)和协议簇下的具体协议(如TCP,UDP)。协议簇主要有以下几类:AF_INET IPV4协议族,是目前最常用的的协议族。AF_INET6 与上面类似,不过...

创建一个Socket,你需要三个参数协议簇、通信类型(数据流,数据报等等)和协议簇下的具体协议(如TCP,UDP)。

协议簇主要有以下几类:

AF_INET     IPV4协议族,是目前最常用的的协议族。

AF_INET6     与上面类似,不过是来用在IPv6地址

AF_UNIX    本地协议,使用在Unix和Linux系统上,它很少使用,一般都是当客户端服务器在同一台及其上的时候使用。

通信类型主要包括:

SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输

SOCK_DGRAM  这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP来进行它的连接。

SOCK_SEQPACKET  这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。

SOCK_RAW 这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(pingtraceroute使用该协议)

SOCK_RDM  这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序

具体通信协议如下:

ICMP  互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息

UDP   用户数据报文协议,它是一个无连接,不可靠的传输协议

TCP  传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包


php使用socket实现客户端和服务端数据通信具体代码如下:

PHP实现的Socket服务端代码:

<?php
// http://www.搜集整理
// Set up our socket
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, 'localhost', 1337);
socket_listen($socket);
// Initialize the buffer
$buffer = "NO DATA";
while(true)
{
 // Accept any connections coming in on this socket
 $connection = socket_accept($socket);
 printf("Socket connectedrn");
 // Check to see if there is anything in the buffer
 if($buffer != "")
 {
  printf("Something is in the buffer...sending data...rn");
  socket_write($connection, $buffer . "rn");
  printf("Wrote to socketrn");
 }
 else
 {
  printf("No Data in the bufferrn");
 }
 // Get the input
 while($data = socket_read($connection, 1024, PHP_NORMAL_READ))
 {
  $buffer = $data;
  socket_write($connection, "Information Receivedrn");
  printf("Buffer: " . $buffer . "rn");
 }
 socket_close($connection);
 printf("Closed the socketrnrn");
}
?>

php socket客户端代码示例如下:

<?php
// Create the socket and connect
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket,’localhost’, 1337);
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
{
 if($buffer == “NO DATA”)
 {
 echo(“<p>NO DATA</p>”);
 break;
 }
 else
 {
  // Do something with the data in the buffer
  echo(“<p>Buffer Data: “ . $buffer . “</p>”);
 }
}
echo(“<p>Writing to Socket</p>”);
// Write some test data to our socket
if(!socket_write($socket, “SOME DATArn”))
{
 echo(“<p>Write failed</p>”);
}
// Read any response from the socket
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))
{
 echo(“<p>Data sent was: SOME DATA<br> Response was:” . $buffer . “</p>”);
}
echo(“<p>Done Reading from Socket</p>”);
?>


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:php实现socket实现客户端和服务端数据通信源代码
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3