1、int:socket(AF_INET, SOCK_STREAM, 0)。返回文件描述符。 出错返回-1。
2、int iFlag; setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void*)&iFlag, sizeof(iFlag))。fd可重复使用。
3、struct sockaddr_t addr; bind(fd, (struct sockaddr*)&addr, sizeof(addr))。 绑定。出错返回-1。
4、listen(fd, 1024)。开始监听。出错返回-1。
5、struct sockaddr_in addr;
socklen_t addrLen = sizeof(addr);
accept(fd, (struct sockaddr*)&addr, &addrLen)。返回文件描述符。fd为socket的返回值。出错返回-1。
6、char* strerror(errno):将errno转化成字符串。
7、inet_ntop(AF_INET, const void *src, char *dst, socklen_t size):将src代表的数值格式转化为表达式格式,存储在dst中。size为dst的长度。
8、ntohs( (struct sockaddr_t).sin_port ):网络序转化为本地序。
htons(8888):将本地序转化为网络序 (struct sockaddr_t).sin_port。
9、ssize_t read(fd, char* buf, sizeof(buf)-1):从文描述符fd中读入到buf中,返回真正读入的字符个数。出错返回-1。
10、close(fd):关闭文件描述符。
11、write(fd, char* buf, (ssize_t)size):从buf中写size个字符到fd中。
12、fd_set readSet
FD_ZERO(&readSet);
FD_SET(要监听的文件描述符, &readSet);
FD_CLR(要清除的文件描述符, &readSet);
int eventCnt = select(maxFd+1, readSet, writeSet, excepSet, NULL);
13、cin.ignore(1024, '\n'):读入1024个字符直到遇到\n。
14、struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8888);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
connect(iSockFd, (struct sockaddr*)&addr, sizeof(addr)) ; 客户端连接addr内的IP地址。出错返回-1。
15、volatile int x;x必须会放在内存中。
16、waitpid(-1, int *, WNOHANG):-1表示等待任意子进程,终止进程的状态存放在int*中。返回子进程pid。出错返回-1。
17、 struct sigaction stAction;
stAction.sa_handler = ProcessSigINT(函数名称);
stAction.sa_flags = 0;
sigemptyset(&(stAction.sa_mask));
sigaction(SIGINT, &stAction, NULL);中断信号SIGINT到来时调用ProcessSigINT函数。继续阻塞。
18、signal(SIGCHLD, ProcessSigChild):信号SIGCHLD到来时调用ProcessSigChild。不阻塞。
19、__sync_fetch_and_add(int* x, int t);*x+=t,返回未加t之前的*x。
20、C++的string的一个构造函数:string(char* str, int size),将字符串str的前size个字符构造成string。