打印当前机器是小头派还是大头派类型
注意,如果没有加这两个头文件
#include <stdio.h>
#include <stdlib.h>
编译时候会报 警告:隐式声明与内建函数‘printf’不兼容 这个错误
编译: gcc -o byteorder byteorder.c
#include <stdio.h> #include <stdlib.h> int main(int argc,char **argv) { union { short s; char c[sizeof(short)]; }un; un.s=0x0102; if(sizeof(short) ==2) { if(un.c[0]==1 && un.c[1]==2) { printf("big-endian\n"); } else if(un.c[0]==2 && un.c[1]==1) { printf("little-endian\n"); } else { printf("unknown\n"); } } else { printf("sizeof(short) = %d\n",sizeof(short)); } return 0; }
10进制ip到二进制转换的例子
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> int main (void) { char IPdotdec[20]; //存放点分十进制IP地址 struct in_addr s; // IPv4地址结构体 // 输入IP地址 printf("Please input IP address: "); scanf("%s", IPdotdec); // // 转换 inet_pton(AF_INET, IPdotdec, (void *)&s); printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序 // 反转换 inet_ntop(AF_INET, (void *)&s, IPdotdec, 16); printf("inet_ntop: %s\n", IPdotdec); }
一次读取n个字节的readn函数
#include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <unistd.h> #include <fcntl.h> ssize_t readn(int fd,void *vptr, size_t n) { size_t nleft; ssize_t nread; char *ptr; ptr = vptr; nleft = n; while(nleft > 0) { if( (nread=read(fd,ptr,nleft)) < 0) { if(nread > 0) { nread = 0; } else { return -1; } } else if(nread == 0) { break; } nleft -= nread; ptr += nread; } return (n-nleft); } int main(int argc, char **argv) { int r_fd=open("/data0/test/test.log",O_RDONLY); char buf[100]; readn(r_fd,buf,20); printf("%s\n",buf); return 0; }
一次写入n个字节的writen函数
#include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <unistd.h> #include <fcntl.h> ssize_t writen(int fd, const void *vptr, size_t n) { size_t nleft; ssize_t nwritten; const char *ptr; ptr = vptr; nleft = n; while(nleft > 0) { if( (nwritten = write(fd,ptr,nleft)) <= 0) { if(nwritten <0) { nwritten = 0; } else { return -1; } } nleft -= nwritten; ptr += nwritten; } return n; } int main(int argc, char **argv) { int w_fd = open("/data0/test/write.log",O_WRONLY|O_CREAT,0755); writen(w_fd,"test he he",10); return 0; }
每次读取一行的readline函数
#include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <unistd.h> #include <fcntl.h> ssize_t readline(int fd, void *vptr, size_t maxlen) { ssize_t n,rc; char c, *ptr; ptr = vptr; for(n=1;n<maxlen;n++) { if( (rc=read(fd,&c,1)) ==1) { *ptr++ = c; if(c=='\n') { break; } } else if(rc == 0) { *ptr = 0; return (n-1); } else { if(rc < 0) { continue; } return -1; } } *ptr = 0; return n; } int main(int argc, char **argv) { int r_fd=open("/data0/test/test.log",O_RDONLY); char buf[100]; readline(r_fd,buf,20); printf("%s\n",buf); return 0; }
参考
相关推荐
UNIX网络编程 卷1:套接字联网API源代码
全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。 结合源代码(C语言)学习效果更好。 《UNIX网络...
UNIX网络编程_卷1_套接字联网API
UNIX网络编程 卷1:套接字联网API(第3版)azw3自购破解
UNIX网络编程卷1:套接字联网API(第3版).pdf
最新的UNIX网络编程卷1:套接字联网API(第3版)源代码
高性能网络编程的好书,第一部分,下载第二部分后才能阅读
UNIX网络编程 卷1 套接字联网API(第3版) 作者:(美)史蒂文斯 作者:(Stevens,W.R.) 作者:(美)芬纳(Fenner,B.) 作者:(美)鲁道夫 作者:(Rudoff,A.M.)著 匿名译
UNIX网络编程 第1卷(第3版):套接字联网API + 代码 经典书籍 第3版,中文 PDF
UNIX网络编程 UNIX网络编程 卷1:套接字联网API(第3版)
《UNIX网络编程(卷1):套接字联网API(第3版)》是一部...全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。
UNIX网络编程_卷1_套接字联网API第3版源代码
UNIX网络编程_卷1_套接字联网API_第二部分(高清扫描版),是最新出版的那本白皮皮的那本,共两个分卷,这是第二个分卷。
《UNIX网络编程 卷1 :套接字联网API 第3版 》全面深入地介绍了如何使用套接字API进行网络编程 全书不但介绍了基本编程内容 还涵盖了与套接字编程相关的高级主题 对于客户 服务器程序的各种设计方法也作了完整的探讨 ...
第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 I/O复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接字编程 第9章 基本SCTP...
中文版-UNIX网络编程卷1:套接字联网API(第3版)第二部分