一、创建进程经常会用到的进程号类型(在linux下)
1.pid_t:这个类型实际上定义也是int型(是宏定义的unsigned int)
二、bzero()函数
用法:#include<string.h>
功能:置字节字符串s的前n个字节 为0且包括“\0”
函数原型:void bzero(void *s,int n)
s为内存(字符串)指针,n为需要清零的字节数,bzero()会将参数s所指的内存区域前n个字节,全部设为零值。
三、htonl()函数
功能:将一个32位数从主机字节顺序转换成网络字节顺序
返回值:htonl()返回一个网络字节顺序的值
在linux系统下:
#include<arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
(有些系统包含的头文件是<netinet/in.h>而不是<arpa/inet.h>)
四、TCP回射服务器程序——main函数
五、ssize_t类型
什么是size_t类型? 为了增强程序的可以移植性。不同系统上,size_t可能不一样。size一般表示一种计数。意义是:计量内存中克容纳的数据项目个数的无符号整数类型。
ssize_t:表示可以被执行读取操作的数据块大小。
六、TCP回射服务器程序——str_echo函数
七、TCP回射客户程序:main函数
八、TCP回射客户程序:str_cli函数
str_cli函数完成客户处理循环:从标准输入读入一个文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上
九、回射程序结构体与结构体所对应的头文件(在c语言的环境下)
结构体/语句/函数 | 头文件 | 作用 | |
exit(0) | #include<stdlib.h> | 在子进程终结程序,程序正常退出 | |
exit(-1)/exit(1) | #include<stdlib.h> | 在子进程终结程序,程序异常退出 | |
struct sockaddr_in |
#include<netinet/in.h>或#include<arpa/inet.h> | 处理网络通信的地址 | |
socket() | #include<sys/types.h>或#include<sys/socket.h> | 创建套接字 | |
bind() | #include<sys/types.h>或#include<sys/socket.h> | 绑定本机端口 | |
connect() | #include<sys/types.h>或#include<sys/socket.h> | 建立连接 | |
listen() | #include<sys/socket.h> | 监听端口 | |
accept() |
#include<sys/types.h>或#include<sys/socket.h> |
建立连接 |
十、sockaddr_in结构体
有两个结构体,sockaddr和sockaddr_in。sockaddr的缺陷是不能把目标地址和端口号分开,而sockaddr_in能够把port(端口号)和addr(地址)分开
服务器/客户程序正常连接
防火墙 (firewalld)服务开启、关闭、重启、状态查看:
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd –state(常用)
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld(常用)
重启:#systemctl restart firewalld
用alias命令简化别名的用法
alias命令用来设置指令的别名
作用:我们可以使用该命令可以将一些较长的命令进行简化。
alias 旧命令=‘新命令 选项 参数’
查看所有已设置的别名
alias -p
取消别名
unalias (我们设置的命令)
正常情况下我们简化的命令只在当前shell有效,若要在所有情况下都能够使用,就需要配置到/etc/bashrc文件当中
怎么配置到环境变量中?
- 先在命令行界面完成上述简化过程
- 然后以root的身份打开vim ~/.bashrc,并把我们上述命令复制到文件中
- 回到命令行界面,输入source .bashrc,完成