C语言网络编程基础1.2

来源:互联网 发布:经济法和民商法 知乎 编辑:程序博客网 时间:2024/05/21 14:50

在1.1节中我们介绍了基本的网络基础,现在我们来介绍一下已经为我们编程使用的函数:

1.socket()  --得到文件描述符

    首先要使用这个函数是需要添加头文件<sys/types.h>和<sys/socket.h>的。其原型为:

    int socket(int domain,int type,int protocol);

    参数介绍:

    (1)domain一般设置成"AF_INET",就如前节数据结构struct sockaddr中的一样。

    (2)type是确定是数据流式还是数据报式,即SOCK_STREAM类型或SOCK_DGRAM类型。

    (3)protocol一般设置为"0"。

    返回:

    socekt()只是返回在系统调用中可能用到的socket描述符,或者在错误的时候返回-1。全局变量errno中存储错误值。

2.bind() --在哪个端口

   一旦得到了套接口,可能就需要将套接口和机器上的一定的端口绑定起来。

   首先要使用这个函数是需要添加头文件<sys/types.h>和<sys/socket.h>的。其原型为:

    int bind(int sockfd,struct sockaddr *my_addr,int addrlen);

   参数介绍:

   (1)sockfd是调用socket返回的文件描述符。

   (2)my_addr是指向数据结构struct sockaddr的指针,它保存地址(即端口和IP地址)信息。

   (3)addrlen设置为sizeof(struct sockaddr)。

   bind()在错误的时候是返回-1,并且设置全局变量errno。

3.connect() --HELLO

   这个函数一般只是在客户端中运用,即需要去连接那个主机的哪个端口,一般不用需要分配本机端口。

   首先要使用这个函数是需要添加头文件<sys/types.h>和<sys/socket.h>的。其原型为:

    int connect(int sockfd,struct sockaddr *serv_addr,int addrlen);

   参数介绍:

   (1)sockfd是调用socket返回的文件描述符。

   (2)serv_addr是指向数据结构struct sockaddr的指针,它保存目的地(即端口和IP地址)信息。

   (3)addrlen设置为sizeof(struct sockaddr)。

   connect()错误的时候返回-1,并且设置全局变量errno。

4.listen() --will somebody please call me.

   处理过程分为两步:首先,你听--listen(),然后,你接受--accept()。

   首先要使用这个函数是需要添加头文件<sys/types.h>和<sys/socket.h>的。其原型为:

    int listen(int sockfd,int backlog);

   参数介绍:

   (1)sockfd是调用socket返回的文件描述符。

   (2)backlog是进入队列中允许的连接数目。这个具体是什么意思呢,其实就是进入的连接是在队列中一直等待直到你接受accept的连接。它们的数目限制于队列的允许。大多数系统的允许数目为20,当然也可以设置为5到10。

    listen()错误的时候返回-1,并且设置全局变量errno。

5.accept() --Thank you for calling port 4000.

   我们可以这样来理解accept,假如有人从很远的地方通过一个你在侦听listen()的端口连接connect()到你的机器。他的连接将加入到等待接受accept()的队列中。你调用accept()告诉他你有空闲的连接。他将返回一个新的套接口文件描述符,原来的一个还在侦听你的那个端口,新的最后在准备发送send()和接受recv()数据。就是这样一个简单的过程。

首先要使用这个函数是需要添加头文件<sys/types.h>和<sys/socket.h>的。其原型为:

    int accept(int sockfd,void *addr,int *addrlen);

   参数介绍:

   (1)sockfd是调用socket返回的文件描述符。

   (2)addr是个指向局部的数据结构struct sockaddr_in的指针。

   (3)addrlen是一个局部整形变量,一般设置为sizeof(struct sockaddr_in)。

   accept()在错误的时候返回-1,并且设置全局变量errno。

原创粉丝点击