欢迎来到天天文库
浏览记录
ID:41561915
大小:67.37 KB
页数:5页
时间:2019-08-27
《socket套接字编程函数简单总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、I/Ofopen(3)调用open⑵打开指定的文件,返回一个文件描述符(就是一个im类型的编号),分配一个FILE结构体,其中包含该文件的描述符、I/O缓冲区和当前读写位宜等信息,返回这个FILE结构体的地址。fgetc⑶通过传入的FILE*参数找到该文件的描述符、I/O缓冲区和当前读写位置,判断能否从I/O缓冲区中读到下一个字符,如果能读到就直接返冋该字符,否则调用read(2),把文件描述符传进去,让内核读取该文件的数据到I/O缓冲区,然后返冋下一个字符。注意,对于C标准I/O库來说,打开的文件由FILE*指针标识,而对于内核來说,打开的文件由文件描述符标识,文件描
2、述符从open系统调用获得,在使用read,write,close系统调川时都需要传文件描述符。fputc(3)判断该文件的1/0缓冲区是否有空间再存放一个字符,如果有空间则直接保存在I/O缓冲区中并返如果I/O缓冲区己满就调用write(2),让內核把I/O缓冲区的内容写回文件。fclose(3)如果I/O缓冲区中还有数据没写回文件,就调用write(2)写冋文件,然后调用close(2)关闭文件,释放FILE结构体和I/O缓冲区。Open:open函数可以打开或创建一个文件,函数返回值是文件描述符。#include#include3、stat.h>#includeintopen(constchar*pathname,intflags);intopen(constchar^pathname,intflags,mode_tmode);intfd,nzi;fd=open(n/dev/tty'JO_RDONLY4、O_NONBLOCK);Closedose函数关闭一个已打开的文件,函数参数是文件描述符。#includeintclose(intfd);返冋值:成功返冋0,出错返冋-1并设置eirnoRead()read函数从打开的设备或文件中读取数据。#include5、istd.h>ssize_tread(intfd,void*buf,size_tcount);返回值:成功返回读取的字节数,出错返回・1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0vvnZeOwritc函数向打开的设备或文件中写数据-#includessize_twritfd,constvoid*bufzsize_tcount);返回值:成功返回写入的字节数,出错返回并设置errnowrite(STDOUT_FILENO,MSG_TRY,strlen(MSG_TRY));文件描述符用户程序不能肓接访问内核屮的文件描述符表6、,而只能使用文件描述符表的索引(即()、1、2、3这些数字),这些索引就称为文件描述符(FileDescriptor),用int型变量保存。程序启动时会自动打开三个文件:标准输入、标准输出和标准错误输出。在C标准库中分别用FILE*指针stdin%stdoutstderr表示。这三个文件的描述符分别是0、1、2ermo:ernio是一个全局变量,很多系统函数都会改变它。有些函数的错误码并不保存在enno中perror:perror函数将错课信息打印到标准错课输出,首先打印参数s所指的字符串,然示打印:号,然后根据当前eiTno的值打印错误原因。strerrorstrer7、ror函数可以根据错误号返回错误原因字符串。有些函数的错误码并不保存在errno中,而是通过返回值返回,就不能调用perror打卬错误原因了,这时就得使用strerror常用函数网络字节与主机字节转换函数^includeuint32_thtonl(uint32_thostlong);uintl6_thtons(uint16_thostshort);uint32tntohl(uint32_tnet丄ong);uintl6_tntohs(uint16_tnetshort);Eg:servAddr.sin_port=htons(servPort);客8、户端ntohs(clientAddr.port):服务器地址转换函数printabletonumbericintinet_pton(intfamily,constchar*strptr,void*dst);constchar*inet_ntop(intfamily,constvoid*src,char*dstfsize_tlen);套接字函数intsocket(intfamily,inttype,intprotocol);例如klistenfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);intclos
3、stat.h>#includeintopen(constchar*pathname,intflags);intopen(constchar^pathname,intflags,mode_tmode);intfd,nzi;fd=open(n/dev/tty'JO_RDONLY
4、O_NONBLOCK);Closedose函数关闭一个已打开的文件,函数参数是文件描述符。#includeintclose(intfd);返冋值:成功返冋0,出错返冋-1并设置eirnoRead()read函数从打开的设备或文件中读取数据。#include5、istd.h>ssize_tread(intfd,void*buf,size_tcount);返回值:成功返回读取的字节数,出错返回・1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0vvnZeOwritc函数向打开的设备或文件中写数据-#includessize_twritfd,constvoid*bufzsize_tcount);返回值:成功返回写入的字节数,出错返回并设置errnowrite(STDOUT_FILENO,MSG_TRY,strlen(MSG_TRY));文件描述符用户程序不能肓接访问内核屮的文件描述符表6、,而只能使用文件描述符表的索引(即()、1、2、3这些数字),这些索引就称为文件描述符(FileDescriptor),用int型变量保存。程序启动时会自动打开三个文件:标准输入、标准输出和标准错误输出。在C标准库中分别用FILE*指针stdin%stdoutstderr表示。这三个文件的描述符分别是0、1、2ermo:ernio是一个全局变量,很多系统函数都会改变它。有些函数的错误码并不保存在enno中perror:perror函数将错课信息打印到标准错课输出,首先打印参数s所指的字符串,然示打印:号,然后根据当前eiTno的值打印错误原因。strerrorstrer7、ror函数可以根据错误号返回错误原因字符串。有些函数的错误码并不保存在errno中,而是通过返回值返回,就不能调用perror打卬错误原因了,这时就得使用strerror常用函数网络字节与主机字节转换函数^includeuint32_thtonl(uint32_thostlong);uintl6_thtons(uint16_thostshort);uint32tntohl(uint32_tnet丄ong);uintl6_tntohs(uint16_tnetshort);Eg:servAddr.sin_port=htons(servPort);客8、户端ntohs(clientAddr.port):服务器地址转换函数printabletonumbericintinet_pton(intfamily,constchar*strptr,void*dst);constchar*inet_ntop(intfamily,constvoid*src,char*dstfsize_tlen);套接字函数intsocket(intfamily,inttype,intprotocol);例如klistenfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);intclos
5、istd.h>ssize_tread(intfd,void*buf,size_tcount);返回值:成功返回读取的字节数,出错返回・1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0vvnZeOwritc函数向打开的设备或文件中写数据-#includessize_twritfd,constvoid*bufzsize_tcount);返回值:成功返回写入的字节数,出错返回并设置errnowrite(STDOUT_FILENO,MSG_TRY,strlen(MSG_TRY));文件描述符用户程序不能肓接访问内核屮的文件描述符表
6、,而只能使用文件描述符表的索引(即()、1、2、3这些数字),这些索引就称为文件描述符(FileDescriptor),用int型变量保存。程序启动时会自动打开三个文件:标准输入、标准输出和标准错误输出。在C标准库中分别用FILE*指针stdin%stdoutstderr表示。这三个文件的描述符分别是0、1、2ermo:ernio是一个全局变量,很多系统函数都会改变它。有些函数的错误码并不保存在enno中perror:perror函数将错课信息打印到标准错课输出,首先打印参数s所指的字符串,然示打印:号,然后根据当前eiTno的值打印错误原因。strerrorstrer
7、ror函数可以根据错误号返回错误原因字符串。有些函数的错误码并不保存在errno中,而是通过返回值返回,就不能调用perror打卬错误原因了,这时就得使用strerror常用函数网络字节与主机字节转换函数^includeuint32_thtonl(uint32_thostlong);uintl6_thtons(uint16_thostshort);uint32tntohl(uint32_tnet丄ong);uintl6_tntohs(uint16_tnetshort);Eg:servAddr.sin_port=htons(servPort);客
8、户端ntohs(clientAddr.port):服务器地址转换函数printabletonumbericintinet_pton(intfamily,constchar*strptr,void*dst);constchar*inet_ntop(intfamily,constvoid*src,char*dstfsize_tlen);套接字函数intsocket(intfamily,inttype,intprotocol);例如klistenfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);intclos
此文档下载收益归作者所有