1.接昨天的文件IO:
buf缓冲区没覆盖的会影响下一次使用,是上一次的残留,所以要清空或重置:
bzero(buf,N) 清空buf的N个子节,一般N就是buf的大小
2.文件IO的写方法
int fd=open(argv[1],O_WRONLY|O_CREAT,0664);
//可写可创建,0664权限
////fgets() 不会读走换行符,不做越界(比如输入字节超出要保存变量的大小)检查
//
fgets(buf,N,stdin);
if(0==strcmp(buf,"quit
")){ //如果用户输入quit,则结束输入,但要注意上次遗留,比如qui
//strcmp:区分大小写
//strcasecmp:不区分大小写
break;
}
write(fd,buf,strlen(buf)); //strlen():检测字符串长度(自动忽略" ",但是图片等本身含" ",故可能出错),
3.文件IO的读写实现文件复制
利用一个中间buf不断从源文件复制一小块到目的文件
4.查看图片:
eog:filename
5.多线程
线程创建函数:pthread_create()
编译时要链接:compile and link with -pthread
线程的结束:
1.当main函数结束,任何状态线程都被kill
2.在最后可以使用pthread_join()来阻塞线程,等待线程结束(main函数一起等待)
6.关于IP
a. 局域网IP:通常以192/10开头
b. IPv4:64bit IPv6:128bit
7.网络模型:OS模型(理想化)、TCP/IP协议(实用性)
8.4类IP地址
9.域名解析系统DNS
www.baidu.comc.n
一级域名:cn 代表中国,国内自动省略了,在外国访问就必须加
二级域名:com 代表机构
com:商业
edu:教育
三级域名:baidu机构名
四级域名:www万维网world wide web
10.套接字:数据流套接字:TCP/数据报套接字:UDP
int socket(int damain,int type,int protocol)
//返回值:成功-返回一个特殊的文件描述符;失败-返回-1并设置errno
int domain:地址簇,代表通信方式
int type:套接字类型
int protocol:默认属性(0就是默认)
socket套接字编程{
数据流式套接字: TCP
int socket(int domain, int type, int protocol);
返回值: 成功 返回的是一个特殊的文件描述符
失败 返回-1 并设置 errno
int domain: 地址簇 代表通信方式
int type: 套接字类型
int protocol: 默认为0
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
返回值: 成功 0
失败 -1
int sockfd: socket 返回的文件描述符
struct sockaddr *my_addr: 绑定本机的IP和PORT
socklen_t addrlen: 第二参数的长度
int listen(int s, int backlog);
返回值: 成功 0
失败 -1
int s: 要监听的套接字
int backlog: 要监听的队列最大数目
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
返回值: 成功 0
失败 -1
}
11.使用手册的使用方法
man man发现:系统调用对应参数2
关键字(7):表示在man参数7中有这个关键字的细节