昨天,在腾讯一面的过程中,问到了关于linux socket的一些函数的调用,还问了这些那情况下会失败,当时就是靠瞎猜……会学校后,打开IDE,根本提示,仔细查看了一番,才明白面试官想问的是那些错误状态码表示的含义….
唉,自己水的不行,今后刻苦学习,不说闲话只做事…..
从client端说起吧~~
一次通信流程是:
- int sd = socket(AF_INET, SOCK_STREAM, 0);
- int ret = connect(sd, (struct sockaddr*) &address, sizeof(address));
- int wr = write(sd, buffer, len);
- int rd = read(sd, buffer, len);
- close(sd);
大致流程如此,下面着重说一下每个函数,下面的结果是使用man查询而来:
- socket
函数名:socket
作用:创建一个通信终端(create an endpoint for communication)
简介(SYNOPSIS):
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain,int type,int protocol);
描述:socket()函数用来创建一个通信终端(endpoint),并返回一个文件描述符(一下用fd代替).
domain参数制定一个通信域,选定的协议族将被用在通信中.这些协议族被定义在