PHP Socket 编程详解
PHP中的实现
服务端
<?php
set_time_limit(0);
// 设置主机和端口
$host = "127.0.0.1";
$port = 12387;
// 创建一个tcp流
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
or die("socket_create() failed:" . socket_strerror(socket_last_error())); // 设置阻塞模式
socket_set_block($socket)
or die("socket_set_block() failed:" . socket_strerror(socket_last_error())); // 绑定到端口
socket_bind($socket, $host, $port)
or die("socket_bind() failed:" . socket_strerror(socket_last_error())); // 开始监听
socket_listen($socket, 4)
or die("socket_listen() failed:" . socket_strerror(socket_last_error())); echo "Binding the socket on $host:$port ... \n"; while (true) { // 接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息
if (($msgsock = socket_accept($socket)) < 0) {
echo "socket_accept() failed:" . socket_strerror(socket_last_error());
}else{
// 读数据
$out = '';
while($buf = socket_read($msgsock,8192)){
$out .= $buf;
} // 写数据
$in = "数据是 $out";
socket_write($msgsock, $in, strlen($in));
}
// 结束通信
socket_close($msgsock);
}
socket_close($socket);
?>
服务端主要进行了以下步骤:
- 创建Socket的监听,等待连接
- 当链接到来时,开启一个子连接处理IO
- 接收来自客户端的传输数据
- 将结果写回给客户端
客户端
<?php
set_time_limit(0);
$host = "127.0.0.1";
$port = 12387; // 创建一个tcp流
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
or die("socket_create() failed:" . socket_strerror(socket_last_error())); echo "try to connect to $host:$port...\n";
$result = socket_connect($socket, $host, $port)
or die("socket_connect() failed:" . socket_strerror(socket_last_error())); $in = "hello \n";
if(!socket_write($socket, $in, strlen($in))) {
echo "socket_write() failed:" . socket_strerror($socket);
}else {
echo "发送成功!\n";
} $out = '';
while($buf = socket_read($socket, 8192)) {
$out .= $buf;
}
echo "接受内容为:$out \n";
socket_close($socket);
?>
客户端主要有以下步骤:
- 连接到服务端Socket
- 向服务端写数据
- 接收来自服务端的数据
PHP Socket 编程详解的更多相关文章
- Linux的SOCKET编程详解(转)
Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系 ...
- 【ARM-Linux开发】Linux的SOCKET编程详解
Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系 ...
- linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...
- Linux的SOCKET编程详解
1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 U ...
- [转]Linux的SOCKET编程详解
From : http://blog.csdn.net/hguisu/article/details/7445768 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在 ...
- socket编程详解,转自http://www.sme-cn.com:82/archives/669
一 Socket简介 Socket翻译过来是套接字,具体含义可自行百度,简言之就是IP:Port的组合,是网络通信的一个窗口,IP就是地址和门牌号(比如长沙市韶山北路81号),Port就是房间号(比 ...
- socket编程详解
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html http://blog.csdn.net/hguisu/article/de ...
- socket原理详解
1.什么是socket 我们知道进程通信的方法有管道.命名管道.信号.消息队列.共享内存.信号量,这些方法都要求通信的两个进程位于同一个主机.但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机 ...
- windows socket函数详解
windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...
随机推荐
- Maven项目中找不到maven dependencies library
一般是,workspace中的.classpath文件中有内容丢失造成 在 <classpathentry kind="con" path="org.eclipse ...
- Codeforces Round #142 (Div. 2)
A. Dragons 按\(x\)排序. B. T-primes \(x\)是平方数,且根\(\sqrt{x}\)是个质数. C. Shifts 枚举列的位置,对于每行来说,最多只会涉及4个列. D. ...
- URAL 1291 Gear-wheels(BFS)
Gear-wheels Time limit: 1.0 secondMemory limit: 64 MB - Arny! What happened with coordinator? Bad wo ...
- (转)一文学会用 Tensorflow 搭建神经网络
一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...
- 简单播放系统提示音 android
//Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); //alert = RingtoneManager.g ...
- Clr core
http://hllvm.group.iteye.com/group/topic/43559
- C# 数组,ArrayList与List对象的区别
在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...
- maxscript,#号和$号
一,#号: 1,数组 #(123, "hi") 2,系统目录 fileName = getDir #scripts + "\\xxx.ms" 二,$号 节点路径 ...
- python子类分配
原问题是将左边样式变成右边样式: 即有父类和子类,父类包括多个子类,怎样将子类匹配到父类下面的问题 代码如下 #!/usr/bin/python3.4 # -*- coding: utf-8 -*- ...
- 转载:scikit-learn学习之决策树算法
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...