如何实现简单的socket通信

happytang2年前默认分类2656

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket既不是程序,也不是协议,其只是操作系统提供的通信层的一组抽象API。前面章节介绍了php socket的一些常用重要的函数,在socket通信中就会有使用。


通信需要服务端和客户端组成:


服务端:使用php初始化socket然后绑定一个端口,对端口进行监听。调用accept阻塞,等待客户端连接。


客户端:客户端初始化一个socket,然后连接服务器,如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。


客户端—服务端是可以彼此交互的应用程序。客户端和服务端之间的交互需要连接。Socket编程负责的就是为应用程序之间建立可进行交互的连接。


Socket连接过程


根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。


(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。


(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。


(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。


本文后续会基于《计算机通信技术》进行补充完善



标签: socket

相关文章

完全靠几个域名就成功上市的公司——Centralnic

本文大部分转自域名城论坛。Centralnic 是英国一家注册局,最早成立可以追溯到 1995 年的 NomiNation,其创始人 Stephen Dyer 于 2000 的时候在这个基础上创立了...

常用算法程序集(C/C++描述)第五版本学习笔记1

近期开始学习常用算法程序集(C/C++描述)第五版本,环境使用的是codeblocks编辑器。碰到了一些问题,分享如下,供大家参考。记录的问题如下:1、对于1.1的一维多项式求值,出现错误:||===...

欢迎使用Z-BlogPHP!

欢迎使用Z-Blog,这是程序自动生成的文章,您可以删除或是编辑它:)系统生成了一个留言本和一篇《欢迎使用Z-BlogPHP!》,祝您使用愉快!...