第1类 时间编程类

1.1 获取日历时间

1.1.1 函数名

time

1.1.2 函数原形

time_t time(time_t *t)

1.1.3 函数功能

返回日历时间

1.1.4 所属头文件

<time.h>

1.1.5 返回值

成功:日历时间失败:-1

1.1.6 参数说明

t:不为空的情况下保存返回值

 

1.2 获取格林威治时间

1.2.1 函数名

gmtime

1.2.2 函数原形

struct tm *gmtime(const time_t *timep)

1.2.3 函数功能

将参数timep所指定的日历时间转化为世界标志时间

1.2.4 所属头文件

<time.h>

1.2.5 返回值

成功:返回世界标准时间,以struct tm形式存储

struct tm {

               int tm_sec;         /* seconds */

               int tm_min;         /* minutes */

               int tm_hour;        /* hours */

               int tm_mday;        /* day of the month */

               int tm_mon;         /* month */

               int tm_year;        /* year */

               int tm_wday;        /* day of the week */

               int tm_yday;        /* day in the year */

               int tm_isdst;       /* daylight saving time */

           };

1.2.6 参数说明

timep:待转换的时间

 

1.3 获取本地时间

1.3.1 函数名

localtime

1.3.2 函数原形

struct tm *localtime(const time_t *timep)

1.3.3 函数功能

将参数timep所指向的日历时间转化为本地时间

1.3.4 所属头文件

<time.h>

1.3.5 返回值

成功:返回以struct tm格式存储的本地时间失败:NULL

1.3.6 参数说明

timep:指向待转化的日历时间

1.4 以字符串方式显示时间

1.4.1 函数名

asctime

1.4.2 函数原形

char *asctime(const struct tm *tm)

1.4.3 函数功能

struct tm格式的时间转化为字符串

1.4.4 所属头文件

<time.h>

1.4.5 返回值

字符串方式显示的时间

1.4.6 参数说明

tm:待转化的tm格式时间

 

1.5 获取高精度时间

1.5.1 函数名

gettimeofday

1.5.2 函数原形

int gettimeofday(struct timeval *tv, struct timezone *tz)

1.5.3 函数功能

获取高精度的时间

1.5.4 所属头文件

<sys/time.h>

1.5.5 返回值

成功:0 失败:-1

1.5.6 参数说明

tv:保存从1970.1.1.0:0:0到现在经历的秒数和微妙数

struct timeval {

time_t      tv_sec;     /* seconds */

suseconds_t tv_usec;    /* microseconds */

};

tzone:通常为空

struct timezone {

int tz_minuteswest;   /* minutes west of Greenwich */

int tz_dsttime;       /* type of DST correction */

};

 

 

 

 

 

 

 

 

 

 

 

第2类 系统调用文件编程类

2.1 打开文件

2.1.1 函数名

open

2.1.2 函数原形

int open(const char *pathname, int flags)

int open(const char *pathname, int flags, mode_t mode)

2.1.3 函数功能

打开或者创建一个文件

2.1.4 所属头文件

<sys/types.h> <sys/stat.h> <fcntl.h>

2.1.5 返回值

成功:文件描述符失败:-1

2.1.6 参数说明

pathname:要打开的文件名(含路径)

flags:文件打开的标志

-O_RDONLY:以只读方式打开文件

-O_WRONLY:以只写方式打开文件

-O_RDWR:以可读可写方式打开文件

-O_APPEND:以追加方式打开文件

-O_CREAT:当打开的文件不存在的时候,创建该文件

mode:一定是在flags中使用了-O_CREAT标志,mode记录待创建的访问权限访问

 

2.2 创建文件

2.1.1 函数名

creat

2.1.2 函数原形

int creat(const char *pathname, mode_t mode)

2.1.3 函数功能

创建一个文件,并以只写的方式打开该文件

2.1.4 所属头文件

<sys/types.h> <sys/stat.h> <fcntl.h>

2.1.5 返回值

成功:文件描述符失败:-1

2.1.6 参数说明

pathname:创建的文件名(含路径)

mode:创建文件的读写权限

 

2.3 关闭文件

2.3.1 函数名

close

2.3.2 函数原形

int close(int fd)

2.3.3 函数功能

关闭一个打开的文件

2.3.4 所属头文件

<unistd.h>

2.3.5 返回值

成功:0 失败:-1

2.3.6 参数说明

fd:待关闭的文件描述符

 

2.4 读文件

2.4.1 函数名

read

2.4.2 函数原形

ssize_t read(int fd, void *buf, size_t count);

2.4.3 函数功能

从一个打开的文件中读取数据

2.4.4 所属头文件

<unistd.h>

2.4.5 返回值

成功:返回读取的字节数失败:-1

2.4.6 参数说明

fd:要读取数据的文件的描述符

count:希望读取的字节数

buf:读取来的数据存到buf指向的空间

 

2.5 写文件

2.5.1 函数名

write

2.5.2 函数原形

ssize_t write(int fd, void *buf, size_t count)

2.5.3 函数功能

向一个打开文件写入数据

2.5.4 所属头文件

<unistd.h>

2.5.5 返回值

成功:写入到文件里的字节数失败:-1

2.5.6 参数说明

fd:要写入数据的文件的描述符

buf:要写入数据的存放位置

count:写入数据的字节数

 

2.6 定位文件

2.6.1 函数名

lseek

2.6.2 函数原形

off_t lseek(int fd, off_t offset, int whence)

2.6.3 函数功能

重新定位文件的读写位置

2.6.4 所属头文件

<sys/types.h> <unistd.h>

2.6.5 返回值

成功:返回移动后的文件指针距离文件头的位置失败:-1

2.6.6 参数说明

fd:指定要操作的文件的描述符

offset:相对偏移,正数为向后移动,负数为向前移动

whence:SEEK_SET,相对于文件头偏移offsetSEEK_CUR,相对于当前位置偏于offsetSEEK_END,相对于文件尾偏移offset

 

2.7 复制文件描述符

2.7.1 函数名

dup

2.7.2 函数原形

int dup(int oldfd)

2.7.3 函数功能

复制一个文件描述符

2.7.4 所属头文件

<unistd.h>

2.7.5 返回值

成功:返回新的文件描述符失败:-1

2.7.6 参数说明

oldfd:待复制的老的文件描述符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第3类 库函数文件编程类

3.1 打开文件

3.1.1函数名

fopen

3.1.2 函数原形

FILE *fopen(const char *path, const char *mode)

3.1.3 函数功能

打开文件

3.1.4 所属头文件

<stdio.h>

3.1.5 返回值

成功:返回文件指针失败:NULL

3.1.6 参数说明

path:指定的打开的文件的名字(含路径)

mode:文件打开模式。”r”以只读方式打开;”r+”以可读可写方式打开;”w”以可写方式打开;”w+”以可读可写方式打开,如果文件不存在则创建文件,否则清空文件;”a”以追加写的方式打开文件;”a+”以追加写并且可读的方式打开文件,如果文件不存在则创建文件

3.2 关闭文件

3.2.1 函数名

fclose

3.2.2 函数原形

int fclose(FILE *fp)

3.2.3 函数功能

关闭文件

3.2.4 所属头文件

<stdio.h>

3.2.5 返回值

成功:0 失败:EOF

3.2.6 参数说明

fp:待关闭的文件指针

 

3.3 读文件

3.3.1 函数名

fread

3.3.2 函数原形

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

3.3.3 函数功能

从文件中读取数据

3.3.4 所属头文件

<stdio.h>

3.3.5 返回值

成功:返回成功读取到的数据量失败:0

3.3.6 参数说明

ptr:指向读取出来后的数据保存的位置

size:每块数据的大小

nmemb:读取的数据块数

stream:指向要读取的文件

 

3.4 写文件

3.4.1 函数名

fwrite

3.4.2 函数原形

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

3.4.3 函数功能

向文件中写入数据

3.4.4 所属头文件

<stdio.h>

3.4.5 返回值

成功:返回成功写入的数据量失败:0

3.4.6 参数说明

ptr:存放要写入文件的数据

size:每块数据的大小

nmemb:写入的数据块数

stream:要写入数据的文件指针

 

3.5 定位文件

3.5.1 函数名

fseek

3.5.2 函数原形

int fseek(FILE *stream, long offset, int whence)

3.5.3 函数功能

设置文件的位置指针

3.5.4 所属头文件

<stdio.h>

3.5.5 返回值

成功:0 失败:-1

3.5.6 参数说明

stream:指定要操作的文件的描述符

offset:相对偏移,正数为向后移动,负数为向前移动

whence:SEEK_SET,相对于文件头偏移offsetSEEK_CUR,相对于当前位置偏于offsetSEEK_END,相对于文件尾偏移offset

 

 

 

 

 

 

第4类 多进程编程类

4.1 获取进程号

4.1.1 函数名

getpid

4.1.2 函数原形

Pid_t getpid()

4.1.3 函数功能

返回调用该函数的进程的id

4.1.4 所属头文件

<sys/types.h> <unistd.h>

4.1.5 返回值

调用该函数的id

4.1.6 参数说明

 

4.2 创建进程

4.2.1 函数名

fork

4.2.2 函数原形

pid_t fork(void)

4.2.3 函数功能

创建一个子进程

4.2.4 所属头文件

<unistd.h>

4.2.5 返回值

成功:在父进程中返回子进程的pid,在子进程中返回0

失败:-1

4.2.6 参数说明

无参数

 

4.2 创建进程

4.2.1 函数名

vfork

4.2.2 函数原形

pid_t vfork(void)

4.2.3 函数功能

创建一个子进程,并且阻塞父进程。与父进程共享数据

4.2.4 所属头文件

<sys/types.h>

<unistd.h>

4.2.5 返回值

成功:在父进程中返回子进程的pid,在子进程中返回0

失败:-1

4.2.6 参数说明

无参数

 

4.2 结束进程

4.2.1 函数名

exit

4.2.2 函数原形

void exit(int status)

4.2.3 函数功能

结束进程,子进程只能用exit()结束,父进程可以用exit()return结束

4.2.4 所属头文件

<stdlib.h>

4.2.5 返回值

4.2.6 参数说明

status0表示正常结束 1表示异常结束

 

4.3 进程等待

4.3.1 函数名

wait

4.3.2 函数原形

pid_t wait(int *status)

4.3.3 函数功能

挂起调用它的进程,直到其子进程结束

4.3.4 所属头文件

<sys/types.h> <sys/wait.h>

4.3.5 返回值

成功:返回终止的那个子进程的id 失败:-1

4.3.6 参数说明

status:记录子进程的退出状态

 

4.4 执行程序

4.4.1 函数名

execl

4.4.2 函数原形

int execl(const char *path, const char *arg, ...)

4.4.3 函数功能

运行可执行文件

4.4.4 所属头文件

<unistd.h>

4.4.5 返回值

成功:不返回失败:返回

4.4.6 参数说明

path:要运行的可执行文件路径

arg:可执行文件运行需要的参数,以NULL来结束

 

第5类 管道通讯编程类

5.1 创建无名管道

5.1.1 函数名

pipe

5.1.2 函数原形

int pipe(int pipefd[2])

5.1.3 函数功能

创建无名管道

5.1.4 所属头文件

<unistd.h>

5.1.5 返回值

成功:0 失败:-1

5.1.6 参数说明

pipefd[0]:读端fd

pipefd[1]:写端fd

 

5.2 创建有名管道

5.2.1 函数名

mkfifo

5.2.2 函数原形

int mkfifo(const char*pathname, mode_t mode)

5.2.3 函数功能

创建fifo文件(有名管道)

5.2.4 所属头文件

<sys/types.h> <sys/stat.h>

5.2.5 返回值

成功:0 失败:-1

5.2.6 参数说明

pathname:要创建的fifo文件的名字(带路径)

mode:创建的fifo文件的访问权限

 

5.3 删除有名管道

5.3.1 函数名

unlink

5.3.2 函数原形

int unlink(const char* pathname)

5.3.3 函数功能

删除文件

5.3.4 所属头文件

<unistd.h>

5.3.5 返回值

成功:0 失败:-1

5.3.6 参数说明

pathname:用来指明要删除的文件名字(含路径)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第6类 信号通讯编程类

6.1 发送信号

6.1.1 函数名

kill

6.1.2 函数原形

int kill(pid_t pid, int sig)

6.1.3 函数功能

向进程发送信号

6.1.4 所属头文件

<sys/types.h> <signal.h>

6.1.5 返回值

成功:0 失败:-1

6.1.6 参数说明

pid:pid>0,pid参数指向接受信号的进程

sig:指明要发送的信号

6.2 处理信号

6.2.1 函数名

signal

6.2.2 函数原形

typedef void(*sighandler_t)(int)

sighandler_t signal(int signum, sighandler_t handler)

6.2.3 函数功能

设置信号的处理方式

6.2.4 所属头文件

<signal.h>

6.2.5 返回值

成功:返回处理函数的指针失败:SIG_ERR

6.2.6 参数说明

signum:要处理的信号

handler:对应信号的处理方式,可以取值,SIG_IGN,忽视这个信号(不处理);SIG_DFL,交给内核来处理;用户自定义的函数,交给用户自定义的函数

第8类 信号量编程类

8.1 创建/打开信号量集合

8.1.1 函数名

semget

8.1.2 函数原形

int segmet(key_t key, int nsems, int semflg)

8.1.3 函数功能

获取信号量集合的标示符

key所指定的信号量不存在的时候,并且semflg包含了IPC_CREAT,这时会创建一个信号量集合

8.1.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/sem.h>

8.1.5 返回值

成功:返回信号量集合的标示符失败:-1

8.1.6 参数说明

key:键值

nsems:创建的信号量集合里面包含的信号量数目

semflg:标志,可以取IPC_CREAT

 

8.2 操作信号量

8.2.1 函数名

semop

8.2.2 函数原形

int semop(int semid, struct sembuf *sops, unsigned nsops)

8.2.3 函数功能

操作信号量

8.2.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/sem.h>

8.2.5 返回值

成功:0 失败:-1

8.2.6 参数说明

semid:要操作的信号量集合的标示符

sops:对哪个信号量执行什么样的操作,为要操作信号量数组

struct sembuf{

unsigned short sem_num;  /* semaphore number */

short          sem_op;   /* semaphore operation */

short          sem_flg;  /* operation flags */

}

sem_op如果是正数表示释放信号量,如果是负数表示获取信号量;sem_flg一般设置为SEM_UNDO,当程序发生错误时,系统帮助释放信号量

nsops:要操作多少个信号量

 

8.3 操作信号量

8.3.1 函数名

semctl

8.3.2 函数原形

int semclt(int semid, int semnum, int cmd, ...)

8.3.3 函数功能

操作信号量

8.3.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/sem.h>

8.3.5 返回值

成功:所请求的相应的值失败:-1

8.3.6 参数说明

semid:要操作的信号量集合的标示符

semnum:要操作多少个信号量

cmd:对信号量执行什么样的操作

GETVALthe value of semval.

SETVALSet  the  value  of  semval  to  arg.val

 

 

 

 

 

 

第9类 共享内存编程类

9.1创建/获取共享内存

9.1.1 函数名

shmget

9.1.2 函数原形

int shmget(key_t key, size_t size, int shmflg)

9.1.3 函数功能

创建或者获取共享内存,并返还其描述符id

9.1.4 所属头文件

<sys/ipc.h> <sys/shm.h>

9.1.5 返回值

成功:返还创建或者获取到的共享内存的描述符

失败:-1

9.1.6 参数说明

key:共享内存的键值

size:共享内存的大小

shmflg:打开标志,如果使用了IPC_CREAT,则会新创建一个共享内存

9.2映射共享内存

9.2.1 函数名

shmat

9.2.2 函数原形

void *shmat(int shmid, const void *shmaddr, int shmflg)

9.2.3 函数功能

shmid所指定的共享内存映射到进程的地址空间里

9.2.4 所属头文件

<sys/types.h> <sys/shm.h>

9.2.5 返回值

成功:返回映射到进程空间之后的内存地址

失败:-1

9.2.6 参数说明

shmid:要映射的共享内存的描述符

shmaddr:指定映射之后的地址,但是一般情况都让该参数为NULL,表明让Linux系统自动选择映射地址

shmflg:标志

 

9.3脱离共享内存

9.3.1 函数名

shmdt

9.3.2 函数原形

int shmdt(const void *shmaddr)

9.3.3 函数功能

从进程地址空间中,断掉与共享内存的联系

9.3.4 所属头文件

<sys/types.h> <sys/shm.h>

9.3.5 返回值

成功:0 失败:-1

9.3.6 参数说明

shmaddr:要断开的共享内存的映射地址

9.4删除共享内存

9.4.1 函数名

shmctl

9.4.2 函数原形

int shmctl(int shmid, int cmd, struct shmid_ds *buf)

9.4.3 函数功能

控制共享内存

9.4.4 所属头文件

<sys/ipc.h> <sys/shm.h>

9.4.5 返回值

成功:根据不同操作返回不同的值

失败:-1

9.4.6 参数说明

shmid:要控制的共享内存的id

cmd:决定执行什么样的控制操作,如IPC_RMID(表示删除)

buf:获取Linux中描述共享内存的struct shmid_ds结构,基本不使用

 

 

 

第10类 消息队列编程类

10.1创建/打开消息队列

10.1.1 函数名

 msgget

10.1.2 函数原形

int msgget(key_t key, int msgflg)

10.1.3 函数功能

打开或创建消息队列

10.1.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/msg.h>

10.1.5 返回值

成功:返回消息队列的id

失败:-1

10.1.6 参数说明

key:键值

msgflg;打开标志,IPC_CREAT:表明新创建一个消息队列

 

10.2发送数据

10.2.1 函数名

msgsnd

10.2.2 函数原形

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg)

10.2.3 函数功能

发送消息到消息队列

10.2.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/msg.h>

10.2.5 返回值

失败:-1

成功:0

10.2.6 参数说明

msqid:消息队列的id

msgp:指向要发送的数据

msgsz:消息的长度

msgflg:标志

消息结构:

struct msgbuf {

long mtype;    /* message type, must be > 0 */

char mtext[1]; /* message data */

};

 

10.3接收消息

10.3.1 函数名

msgrcv

10.3.2 函数原形

ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg)

10.3.3 函数功能

从消息队列中接收消息

10.3.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/msg.h>

10.3.5 返回值

失败:-1

成功:返回实际结束到的消息的数据长处

10.3.6 参数说明

msqid:消息队列的id

msgp:存放取出的消息

msgsz:希望取到消息的最大长度

msgtyp:消息的类型。

=0:直接忽略类型,直接取消息队列中的第一天消息;

>0:取消息队列中类型等于msgtpy的第一条消息;

<0:取类型比msgtpy的绝对值要小或者等于的消息,如果有多条消息满足该条件,则取类型最小的一条;

msgflg:标志

 

10.4删除消息队列

10.4.1 函数名

msgctl

10.4.2 函数原形

int msgctl(int msqid, int cmd, struct msqid_ds *buf)

10.4.3 函数功能

控制消息队列

10.4.4 所属头文件

<sys/types.h> <sys/ipc.h> <sys/msg.h>

10.4.5 返回值

失败:-1

成功:0

10.4.6 参数说明

msqid:消息队列的id

cmd:对消息队列执行的操作命令,IPC_RMID用于删除消息队列

buf:获取内核中的struct msqid_ds,通常不用

 

 

 

第11类 多线程编程类

11.1创建线程

11.1.1 函数名

pthread_create

11.1.2 函数原形

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)

11.1.3 函数功能

创建新的线程

11.1.4 所属头文件

<pthread.h> 特别注意:编译时必须链接pthread

11.1.5 返回值

成功:0 失败:错误编码

11.1.6 参数说明

thread:新创建的线程的ID

attr:待创建线程的属性,一般为NULL

start_routine:线程的入口函数

arg:线程入口函数的参数,可以为NULL

 

11.2等待线程结束

11.2.1 函数名

pthread_join

11.2.2 函数原形

int pthread_join(pthread_t thread, void **retval)

11.2.3 函数功能

用于等待线程结束

11.2.4 所属头文件

<pthread.h> 特别注意:编译时必须链接pthread

11.2.5 返回值

成功:0 失败:错误编号

11.2.6 参数说明

thread:要等待结束的线程的ID

retval:用于保存线程退出时的状态,一般为NULL

 

11.3退出线程

11.3.1 函数名

pthread_exit

11.3.2 函数原形

void pthread_exit(void *retval)

11.3.3 函数功能

结束线程

11.3.4 所属头文件

<pthread.h> 特别注意:编译时必须链接pthread

11.3.5 返回值

void

11.3.6 参数说明

retval:保存返回值

 

11.4线程互斥锁初始化

11.4.1 函数名

phtread_mutex_init

11.4.2 函数原形

int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr)

11.4.3 函数功能

用来初始化互斥锁

11.4.4 所属头文件

<pthread.h>

11.4.5 返回值

成功:0 失败:错误编号

11.4.6 参数说明

mutex:要去初始化的互斥锁的指针

attr:初始化的属性,一般为NULL

 

11.5获取线程互斥锁

11.5.1 函数名

phtread_mutex_lock

11.5.2 函数原形

int pthread_mutex_lock(pthread_mutex_t *mutex)

11.5.3 函数功能

用来锁住互斥锁

11.5.4 所属头文件

<pthread.h>

11.5.5 返回值

成功:0 失败:错误编号

11.5.6 参数说明

mutex:要锁住的互斥锁

 

11.6释放线程互斥锁

11.6.1 函数名

phtread_mutex_unlock

11.6.2 函数原形

int pthread_mutex_unlock(pthread_mutex_t *mutex) 11.6.3 函数功能

用来解开互斥锁

11.6.4 所属头文件

<pthread.h>

11.6.5 返回值

成功:0 失败:错误编号

11.6.6 参数说明

mutex:要解开的互斥锁

 

11.7提交条件变量

11.7.1 函数名

pthread_cond_signal

11.7.2 函数原形

int pthread_cond_signal(pthread_cond_t *cond)

11.7.3 函数功能

提交条件变量

11.7.4 所属头文件

<pthread.h>

11.7.5 返回值

成功:0 失败:错误编号

11.7.6 参数说明

cond:要提交的条件变量

 

11.8等待条件变量

11.8.1 函数名

pthread_cond_wait

11.8.2 函数原形

int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex)

11.8.3 函数功能

等待条件变量

11.8.4 所属头文件

<pthread.h>

11.8.5 返回值

成功:0 失败:错误编号

11.8.6 参数说明

cond:要等待的条件变量。通过pthread_cond_t cond = PTHREAD_COND_INITIALIZER初始化

mutex:与条件变量关联的互斥锁。先unlock互斥锁,然后再lock

 

 

 

第13类 网络编程类

12.1TCP通信

服务器

socket(创建socket

bind(绑定地址)

listen(监听端口)

accept(等待连接)

send/recv(发|收数据)

close(结束连接)

客户机

socket(创建socket

connect(连接服务器)

send/recv(发|收数据)

close(关闭连接)

 

UDP通信

服务器

socket(创建socket

bind(绑定地址)

sendto/recvfrom(发|收数据)

close(结束连接)

客户机

socket(创建socket

sendto/recvfrom(发|收数据)

close(关闭连接)

 

 

12.1创建套接字

12.1.1 函数名

socket

12.1.2 函数原形

int socket(int domain, int type, int protocol)

12.1.3 函数功能

创建一个套接字

12.1.4 所属头文件

<sys/socket.h>

12.1.5 返回值

成功:套接字描述符失败:-1

12.1.6 参数说明

domain:通信域,通常取AF_INET(表示Ipv4)

type:类型,通常取

SOCK_DGRAM(表示UDP)SOCK_STREAM(表示TCP)

protocol:协议,通常取0

 

12.2地址绑定

12.2.1 函数名

bind

12.2.2 函数原形

int bind(int sockfd, const struct sockeaddr *addr, socklen_t len)

12.2.3 函数功能

将地址绑定到一个套接字

12.2.4 所属头文件

<sys/socket.h>

12.2.5 返回值

12.2.6 参数说明

sockfd:套接字标示符

addr:绑定地址

len:地址长度

 

//#include <netinet/in.h>

通用地址

struct sockaddr {
sa_family_t sa_family;
char sa_data[14];
}

IPv4地址
struct sockaddr_in {
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}
struct in_addr {
unsigned long s_addr;
}

 

地址转换

in_addr_t inet_addr(const char *cp)

功能:将字符串形式的IP地址转化为整数形式的IP地址(网络字节序)

范例:in_addr.saddr = inet_addr(“192.168.1.1”);

int inet_aton(const char *cp, struct in_addr *inp);

将字符串形式的IP地址转化为整数形式的IP地址(网络字节序)

char *inet_ntoa(struct in_addr)

功能:将整数形式的IP地址转化为字符串形式的IP地址

 

网络字节序

uint32_t htonl(uint32_t hostlong);

功能:将32位的数据从主机字节序转换为网络字节序

范例:in_addr.saddr = htonl(INADDR_ANY)INADDR_ANY表示本机的所有地址

uint16_t htons(uint16_t hostshort);

功能:将16位的数据从主机字节序转换为网络字节序

uint32_t ntohl(uint32_t netlong);

功能:将32位的数据从网络字节序转换为主机字节序

uint16_t ntohs(uint16_t netshort);

功能:将16位的数据从网络字节序转换为主机字节序

 

12.3监听端口

12.3.1 函数名

listen

12.3.2 函数原形

int listen(int sockfd, int backlog)

12.3.3 函数功能

设置服务器监听端口

12.3.4 所属头文件

<sys/socket.h>

12.3.5 返回值

成功:0 失败:-1

12.3.6 参数说明

sockfd:套接字fd

backlog:服务器可连接的客户数量

 

12.4等待连接

12.4.1 函数名

accept

12.4.2 函数原形

int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len)

12.4.3 函数功能

等待客户机连接,如果没有客户机连接,将阻塞服务器

12.4.4 所属头文件

<sys/socket.h>

12.4.5 返回值

成功:返回新的套件字描述符失败:-1

12.4.6 参数说明

sockfd:套接字fd

addr:返回客户机的地址

len:返回的地址长度

 

12.5接收数据

12.5.1 函数名

recv

12.5.2 函数原形

ssize_t send(int sockfd, const void * buf, size_t nbytes, int flags)

12.5.3 函数功能

用于接收数据

12.5.4 所属头文件

<sys/socket.h>

12.5.5 返回值

成功:0 失败:-1

12.5.6 参数说明

sockfd:新的套件字fd

buf:接收的数据

nbytes:接收的字节数

flags:标志

 

12.6发送数据

12.6.1 函数名

send

12.6.2 函数原形

ssize_t send(int sockfd, const void * buf, size_t nbytes, int flags)

12.6.3 函数功能

用于发送数据

12.6.4 所属头文件

<sys/socket.h>

12.6.5 返回值

成功:返回发送的字节数失败:-1

12.6.6 参数说明

sockfd:新的套件字fd

buf:发送的数据

nbytes:发送的字节数

flags:标志

 

12.7建立连接

12.7.1 函数名

connect

12.7.2 函数原形

int connect(int sockfd, const struct sockaddr *addr, socklen_t len)

12.7.3 函数功能

用于客户机向服务器建立连接

12.7.4 所属头文件

<sys/socket.h>

12.7.5 返回值

成功:0 失败:-1

12.7.6 参数说明

sockfd:套接字fd

addr:服务器地址

len:地址长度

 

12.8 udp发送数据

12.8.1 函数名

sendto

12.8.2 函数原形

ssize_t sendto(int sockfd, const void *buf, size_t nbytes, int flags, const struct sockaddr *destaddr, socklen_t deslen)

12.8.3 函数功能

发送数据

12.8.4 所属头文件

<sys/socket.h>

12.8.5 返回值

成功:返回发送的字节数失败:-1

12.8.6 参数说明

sockfd:套接字fd

buf:要发送的数据

nbytes:发送数据的字节数

flags:标志

destaddr:目的地址

deslen:地址长度

 

12.9 udp接收数据

12.9.1 函数名

recvfrom

12.9.2 函数原形

ssize_t recvfrom(int sockfd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict addrlen)

12.9.3 函数功能

接收数据

12.9.4 所属头文件

<sys/socket.h>

12.9.5 返回值

成功:0 失败:-1

12.9.6 参数说明

sockfd:套接字fd

buf:接收的数据

len:期望接收数据的字节数

flags:标志

addr:接收的地址

addrlen:接收地址的长度

 

[国嵌攻略][070-095][Linux编程函数手册]的更多相关文章

  1. [国嵌攻略][171][V4L2图像编程接口深度学习]

    V4L2摄像编程模型 1.打开摄像头设备文件 2.获取驱动信息-VIDIOC_QUERYCAP 3.设置图像格式-VIDIOC_S_FMT 4.申请帧缓冲-VIDIOC_REQBUFS 5.获取帧缓冲 ...

  2. [国嵌攻略][100][嵌入式Linux内核制作]

    Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器 ...

  3. [国嵌攻略][070][GDB调试程序]

    GDB是GNU发布的一款功能强大的调试工具.GDB主要完成下面三个方面的功能: 1.启动被调试的程序. 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检测程序状态. GDB使用流程 1 ...

  4. [国嵌攻略][090][linux网络编程模型]

    编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一.而针对不同协议的差异性操作,则交给了Socket去自行解决. TCP编程模型 UDP编程模型

  5. [国嵌攻略][077][Linux时间编程]

    时间类型 Coordinated Universal Time(UTC):世界标准时间,也就是格林威治时间(Greenwich Mean Time, GMT). Calendar Time:日历时间, ...

  6. [国嵌攻略][119][Linux中断处理程序设计]

    裸机中断: 1.中断统一入口. 2.注册中断处理程序. 3.根据中断源编号,调用中断处理程序. Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口. 2.获取产生中断源的 ...

  7. [国嵌攻略][108][Linux内核链表]

    链表简介 链表是一种常见的数据结构,它通过指针将一系列数据节点连接成一条数据链.相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入 ...

  8. [国嵌攻略][107][Linux进程管理子系统]

    进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 2.进程:是一个执行中的程序,它是一个动态的实体. 进程四要素 1.有一段程序供其执行.这段程序不一定是某个进程所 ...

  9. [国嵌攻略][106][Linux内存管理子系统]

    内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址 ...

随机推荐

  1. ES6 函数的扩展(1)

    1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...

  2. Docker了解

    Docker了解1.Docker能做什么:Docker能够解决虚拟机能够解决的问题,同时也能够解决虚拟机由于请求资源过高无法解决的问题. *隔离应用依赖 *创建应用镜像并进行复制 *创建容易分发的即启 ...

  3. javascript01

    手敲代码01 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  4. useradd 命令 及 相关文件解读

    翻译自 man useradd 名称: 创建新用户或更新默认的新用户信息 快照:useradd -D 描述: 在不加-D参数调用时,useradd命令使用指定的参数和系统的默认值来创建新账户. 取决于 ...

  5. Chrome headless 模式

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...

  6. Q:javax.comm 2.0 windows下Eclipse的配置

    @转自http://blog.csdn.net/zhuanghe_xing/article/details/7523744处 要在Windows下,对计算机的串口或并口等进行编程,可以选择使用Java ...

  7. php 运行的四种模式

    1)cgi 通用网关接口(Common Gateway Interface)) CGI即通用网关接口(Common Gateway Interface),它是一段程序, 通俗的讲CGI就象是一座桥,把 ...

  8. Sp_Lock

    SP_LOCK 其显示信息为: Spid:进程ID号(要发现哪些用户和该spid相连,你就要执行存储过程sp_who) Dbid:数据库ID号(可以在主数据库中的sysdatabases表格中找到它) ...

  9. 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

    看<Python cookbook>的时候,第9.5部分,"定义一个属性可由用户修改的装饰器",有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代 ...

  10. chrome调试工具高级不完整使用指南(实战一)

    三.chrome调试工具实战 3.1 获取界面对应的HTML和修改样式 我们以博客园为例子来分析. 通过上面的操作就可以定位到对应的HTML代码 左侧菜单显示的就是当前指定元素层叠样式的一个情况 上面 ...