最后更新:2022-03-08 11:55:34 手机定位技术交流文章
前面那章介绍了客户-服务器的原理,下面就介绍客户-服务器编程的实现原理,之后要我们自己手动编代码来完成客户-服务器的通信过程
操作系统定义了应用程序和协议软件(TCP/IP)之间的接口——应用程序接口
我们要做的就是通过程序调用操作系统的应用程序接口,然后通过它而调用协议软件(TCP/IP)的接口来实现网络之间通信,也就是网络编程
应用程序接口要实现的功能:
网络通信的两种基本方法
设计者发明一种新的系统调用
设计者使用一般的I/O调用访问TCP/IP
套接字就是Socket,接收所有需要通信参数后,调用系统调用的API,然后调用协议软件来进行网络通信,它本身封装了很多的方法,能够实现很多的通信中的功能
套接字API的实现提供了套接字系统调用所要使用的符号常量和数据结构声明
在套接字被使用前,创建该套接字的应用程序必须用其他系统调用把套接字数据结构中的信息填上
下面是通信流程

retcode =socket( family, type, protocol )
返回值:成功 0,失败 -1 errno 记录错误代码
Family:协议族
Type:流式套接字TCP或者数据报套接字UDP
protocol :具体的协议
retcode = connect( socket, addr, addrlen)
返回值:成功 0,失败 -1
socket:创建的套接字
addr:请求连接的地址
addrlen:地址长度
recode= bind( socket, localaddr, addrlen )
retcode = listen( socket, queuelen )
服务器使用listen使套接字处于被动状态

从请求队列取请求,返回新套接字描述符,也就是句柄
retcode = accept( socket, addr, addrlen )
retcode = recvfrom(socket, buffer, buflen, flags, from, fromlen)
套接字的接收,和读文件类似
retcode = sendto(socket, msg, msglen, flags, to, tolen)
套接字的发送,和写文件类似
retcode = close ( socket )
retcode = shutdown ( socket , how)
how的取值及含义
| 值 | 宏 | 说明 |
|---|---|---|
| 0 | shut_RD | 不允许本地socket进行读 |
| 1 | shut_WR | 不允许本地socket进行写 |
| 2 | shut_RDWR | 不允许本地socket进行读写 |
本文由 在线网速测试 整理编辑,转载请注明出处。