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。
- C语言网络编程基础1.2
- C语言网络编程基础
- Linux C语言编程------网络编程基础
- C语言网络编程基础1.1
- c语言网络编程
- C语言网络编程
- C语言编程基础
- c语言基础编程
- c语言编程--网络编程
- c语言基础--编程基础
- linux C 网络编程基础
- Linux C网络编程基础
- C语言编程基础题库
- C语言编程基础--(1)
- C语言编程基础考试
- C语言编程基础7.8
- C语言编程基础9
- C语言编程基础E
- 学习的好地方
- 为silverlight页面创建根页面BasePage
- 【Silverlight】Bing Maps学习系列(二):通过Bing Maps Silverlight Control如何显示地图
- mysql 图形管理工具
- c++对象模型(多态1)
- C语言网络编程基础1.2
- Java怎样中断一个运行中的线程
- 用Flex的编译参数实现AS3程序的自身预加载(Self Preloading)
- 理解 Thread.Sleep 函数
- C#全角和半角转换
- IsPostBack深入探讨
- C# 操作MySQL数据库的简单例子
- 开源的读取Excel文件组件-ExcelDataReader
- The Netron Project For vb.net