标签:
各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在上一回中介绍了socket通信的步骤,当时提到了实现这些步骤使用的系统调用,当时有些看官不理解这些系统调用,今天我们趁热打铁来介绍这些系统调用。
int socket(int domain, int type, int protocol)
使用该函数时需要包含的头文件为: #include <sys/socket.h>
,该文件中包含了socket通信相关的系统调用,我们在本章回中介绍的系统调用都需要包含该头文件。此外,该函数的第三个参数通常为0,表示使用默认的通信协议。
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen)
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen)
int listen(int sockfd, int backlog)
关于服务器允许接受的通信连接请求数量是一个重要的数值,不能太大。设置该值时要参考服务器的负载能力和服务器的处理能力,不然会让服务器崩溃。服务器本质上也是一台电脑,只是性能比我们日常使用的电脑好一些,如果你在自己的电脑上打开成百上千个程序,电脑就会慢的像个蜗牛,甚至死机。同理,如果在服务器上打开的连接太多,服务器也会崩溃。这点我相信大家很容易理解,因此就不多说了。
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
关于该函数要做以下的说明,就当作是一些注意事项吧:
int shutdown(int sockfd, int how)
回想一下,我们在前面章回中介绍管道的时候,使用管道进行进程间通信时,管道是单向的,管道两端的任何一方只能读或者写操作,如果想在任何一方同时进行读写操作,那么就需要再建立一个管道。但是使用套接字建立的通信连接是双向的,也就是说我们在客户端或者服务器端中的任何一方都可以进行读写操作。使用close函数时会把套接字通信连接的两端都关闭,有时候我们只需要关闭其中的一端,这个时候该函数就派上了用场。我们通过该函数的第二个参数来控制关闭的方向,该参数的值可以是以下三种之一:
该函数在操作上比close灵活一些,可以看作是对close函数的扩展。
各位看官,关于socket通信的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
一起talk C栗子吧(第一百四十九回:C语言实例--socket通信三)
标签:
原文地址:http://blog.csdn.net/talk_8/article/details/51356669