day3

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\n")){  //如果用户输入quit,则结束输入,但要注意上次遗留,比如qui\n
//strcmp:区分大小写
//strcasecmp:不区分大小写
	break;
}
write(fd,buf,strlen(buf));  //strlen():检测字符串长度(自动忽略"\0",但是图片等本身含"\0",故可能出错),

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中有这个关键字的细节
posted @ 2020-09-02 21:19  盐亭的森林  阅读(101)  评论(0编辑  收藏  举报