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

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

协议簇主要有以下几类:

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

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

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

通信类型主要包括:

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

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

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

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

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

具体通信协议如下:

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

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

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

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

PHP实现的Socket服务端代码:<?php

// http://www.169it.com搜集整理

// 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(“

NO DATA

”);

break;

}

else

{

// Do something with the data in the buffer

echo(“

Buffer Data: “ . $buffer . “

”);

}

}

echo(“

Writing to Socket

”);

// Write some test data to our socket

if(!socket_write($socket, “SOME DATArn”))

{

echo(“

Write failed

”);

}

// Read any response from the socket

while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))

{

echo(“

Data sent was: SOME DATA
Response was:” . $buffer . “

”);

}

echo(“

Done Reading from Socket

”);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值