采用TCP协议的C/S架构实现API详解
来源:互联网 发布:动画软件tvp怎么用 编辑:程序博客网 时间:2024/05/21 09:11
博客内容来源:网络、书籍和本人整理总结
socket():
socket()函数是一个可用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源的函数。
函数原型:socket(int af, int type, int protocol);
af:一个地址描述。目前只支持AF_INET格式,也就是ARPA Internet地址格式。
type:新套接口的类型描述。
SOCK_STREAM提供有序的、可靠的、双向的和基于连接的字节流,使用带外数据传送机制,为Internet地址族使用TCP。
SOCK_DGRAM支持无连接的、不可靠的和使用固定大小(通常很小)缓冲区的数据报服务,为Internet地址族使用UDP。
protocol:套接口所用的协议。如果调用者不想指定,可用0指定,表示缺省。
setsockpt():
setsockpt()函数,用于任意类型、任意状态套接口的设置选项值。
函数原型:int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);
sockfd:标识一个套接口的描述字。
level:选项定义的层次;支持SOL_SOCKET(通用套接字选项)、IPPROTO_TCP(TCP选项)、IPROTO_IP(IP选项)和IPPROTO_IPV6。
optname:需设置的选项。SO_REUSEADDR允许套接口和一个已在使用中的地址捆绑。
optval:指针,指向存放选项待设置的新值的缓冲区。
optlen:optval缓冲区长度。
作用:close(socket)(一般不会立即关闭而经历TIME_WAIT的过程)之后想继续重用该socket。
int opt = 1;相当于bool opt = true;即SO_REUSEADDR是允许的。
bind():
bind()函数将一本地地址与一套接口捆绑。
函数原型:int bind(int sockfd, const struct sockaddr* my_addr, socklen_t addrlen);
sockfd:表示已经建立的socket编号(描述符)。
my_addr:是一个指向sockaddr结构体类型的指针。
addrlen:my_addr结构的长度。
listen():
listen()函数表示让一个套接字处于监听到来的连接请求的状态。
函数原型:int listen(SOCKET sockfd, int backlog);
sockfd:一个已绑定未被连接的套接字描述符。
backlog:连接请求队列的最大长度(一般由2到4)。
accept():
accept()函数是在一个套接口接受一个连接。
函数原型:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
sockfd:套接字描述符,该套接口在listen()后监听连接。
addr:(可选)指针,指向一缓冲区,其中接收为通讯层所知的连接实体的地址。addr参数的实际格式由套接口创建时所产生的地址族确定。
addrlen:(可选)指针,输入参数,配合addr一起使用,指向存有addr地址长度的整型数。
inet_ntoa():
inet_ntoa()函数将一个十进制网络字节序转换为点分十进制IP格式的字符串。
函数原型:char
*inet_ntoa(
struct
in_addr in);
in:一个网络上的IP地址。
pthread_create():
pthread_create()函数是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。
函数原型:int
pthread_create(pthread_t *tidp,
const
pthread_attr_t *attr,
(
void
*)(*start_rtn)(
void
*),
void
*arg);
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
connect():
connect()函数用于建立与指定socket的连接。
函数原型: int connect(int s, const struct sockaddr * name, int namelen);
谢谢阅读!
- 采用TCP协议的C/S架构实现API详解
- (笔记)Linux下网络编程,采用TCP协议实现的C/S架构
- 模拟QQ聊天——采用TCP协议的C/S架构实现
- Linux下TCP协议的C/S架构实现
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- 采用C++的ACE库实现的一个通用的C/S架构通信程序
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- tcp协议实现C/S通信(代码)
- open failed: ENOENT (No such file or directory)!
- numpy 学习笔记(1)
- Spring源码解析
- 概率图模型学习(3)——贝叶斯网与马尔科夫网的关联
- C++14特性
- 采用TCP协议的C/S架构实现API详解
- 策略模式
- ios开发FMDB导入SQLCipher加密数据库
- windows7+eclipse+hadoop2.5.2环境配置
- 关于dispatch_semaphore的使用
- java IO流
- SpringMVC学习系列(4) 之 数据绑定
- iptables
- Oracle DG failover 后恢复