关于php的socket

这里仅记录tcp协议:

关于server:

<?php
/**
 * 测试关于php的socket函数
 */
/**
 * 最基本的socket,服务器端:
 * 创建
 * $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
 * 绑定
 * socket_bind($sock,‘127.0.0.1‘);
 * 监听
 * socket_listen($sock,5);
 * 得到连接
 * $msgSock = socket_accept($sock);
 * socket_write();
 * socket_read();
*/
$address = ‘127.0.0.1‘;
$port = 12345;
if(($sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname(‘tcp‘)))===false)
{
    echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
//绑定
if(socket_bind($sock,$address,$port) === false)
{
    echo ‘socket bind failed ‘.socket_strerror(socket_last_error())."\r\n";
}
//监听
if(socket_listen($sock,10) === false)
{
    echo ‘socket listen failed ‘.socket_strerror(socket_last_error())."\r\n";
}
do
{
    $msgSock = socket_accept($sock);
    if($msgSock === false)
    {
        echo ‘socket accept failed ‘.socket_strerror(socket_last_error())."\r\n";
        break;
    }
    //发送到客户端
    $msg = "server连接成功了!\r\n";
    socket_write($msgSock,$msg,strlen($msg));
    //读从客户端接收的数据
    $reciveMsg = socket_read($msgSock,8192);
    echo "reciveed msg is: ".$reciveMsg."\r\n";
    socket_close($msgSock);
}while(true);

socket_close($sock);

关于client:

<?php
/**
 * 关于客户端的socket
 */
/**
 * 函数
 * socket_create();
 * socket_connect();
 * socket_write();
 * socket_read();
 */
$address = ‘127.0.0.1‘;
$port = 12345;
$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if($sock === false)
{
    echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
echo "attempt to connect server...\r\n";
$result = socket_connect($sock,$address,$port);
if($result === false)
{
    echo "socket connect failed ".socket_strerror(socket_last_error())."\r\n";
}
echo ‘connect to server ..‘."\r\n";
$msg = "client connect success\r\n";
socket_write($sock,$msg,strlen($msg));
while($out = socket_read($sock,8192))
{
    echo $out."\r\n";
}
echo "close socket ..\r\n";
socket_close($sock);

php的socket还有一种套接字流,都是stream打头的函数,其中也有server和client,这里不记录

时间: 2024-08-09 07:44:51

关于php的socket的相关文章

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

iOS开发——网络编程OC篇&amp;Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

程序媛计划——python socket通信

定义 socket 是进程间的一种通信方式,可以实现不同主机间的数据传输 #写服务期端程序server.py #实现服务器向客户端连接 1 #!/usr/bin/env python 2 #coding:utf-8 3 import socket 4 s= socket.socket() 5 #127.0.0.1是本地主机,1234是随意设置到一个端口号 6 s.bind(('127.0.0.1',1234)) #绑定端口号为1234 7 8 #等待客户端连接 9 s.listen(5) 10

Linux Socket编程-(转自吴秦(Tyler))

"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信?

java socket编程中backlog的含义(zz)

使用Java.NET.ServerSocket能够方便的创建一个服务端套接字,这个类的构造函数有一个参数backlog.下面这段代码,在本机的8888端口上建立了一个套接字,backlog设置为5. [java] view plain copy // port:8888,backlog:5 ServerSocket server = new ServerSocket(8888, 5); 下面的Client是我们的测试类,会创建30个socket连接. [java] view plain copy

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

【windows socket+UDPserverclient】

Windows Socket+UDPserverclient Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接.不可靠的传输数据,其特点是简单,快捷.相比与TCP,UDP不须要建立连接(不需connect.accept函数),数据发送接收之后,不须要终止连接.基于UDP的程序,避免了TCP执行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会

Unity3d 封装Socket创建简单网络

北京又在打雷下大雨了,学习Unity以来,越来越感兴趣,情不自禁的想要学习更多知识 这次自己搭建一个Socket模块,比较基础,适合新手学习,详细介绍Socket的搭建过程,同样会把详细过程在代码里进行注释~ 在搭建Socket过程中,需要创建以下几个常用的方法: 1.创建套接字(socket) 2.绑定Ip和端口 3.监听方法 4.接收客户端请求的方法 5.收发消息的方法 创建SocketManger管理类 把客户端与服务端代码都写在新建的SocketManger里,并把SocketMange

Java网络编程之tcp的socket通信

1.客户端MyClient.java 1 import java.io.*; 2 import java.net.*; 3 4 public class MyClient 5 { 6 public static void main(String[] args)throws Exception 7 { 8 Socket s = new Socket("192.168.1.1" , 30000); 9 // 客户端启动ClientThread线程不断读取来自服务器的数据 10 new Th