linux下0,1,2,系统中的标准输入输出
标准输入 即 STDIN , 在 /dev/stdin , 一般指键盘输入, shell里代号是 0
标准输出 STDOUT, 在 /dev/stdout, 一般指终端(terminal), 就是显示器,
shell里代号是 1
标准错误 STDERR, 在 /dev/stderr 也是指终端(terminal), 不同的是, 错误信
息送到这里 shell里代号是 2
C语言值输出数据类型
1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:
表示输出类型的格式字符 格式字符意义
a 浮点数、十六进制数字和p-计数法(C99)
A 浮点数、十六进制数字和p-计数法(C99)
c 输出单个字符
d 以十进制形式输出带符号整数(正数不输出符号)
e 以指数形式输出单、双精度实数
E 以指数形式输出单、双精度实数
f 以小数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用
G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
i 有符号十进制整数(与%d相同)
o 以八进制形式输出无符号整数(不输出前缀O)
p 指针
s 输出字符串
x 以十六进制形式输出无符号整数(不输出前缀OX)
X 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
socket缓冲区
每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。
write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由
TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成
功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是
TCP协议负责的事情。
TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网
络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,这取决于当
时的网络情况、当前线程是否空闲等诸多因素,不由程序员控制。
read()/recv() 函数也是如此,也从输入缓冲区中读取数据,而不是直接从网络中
读取。
EOF的意义及用法
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也
是EOF,因此常被用来判断调用一个函数是否成功。
udp通信只需要accept
Linux TCP客户端与服务端区别
服务端需要bind,端口需要独占性,不需要绑定。