LINUX
应用编程函数自学手册
gedit file.txt
目录
第九类共享内存通讯
9.1 创建打开共享内存……………………………………………………………………………………20
9.2映射共享内存…………………………………………………………………………………………….21
9.3分离共享内存…………………………………………………………………………………………….22
9.4操作共享内存…………………………………………………………………………………………….23
第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 形式存储
1.2.6 参数说明
Timep :待转化的日历时间
struct tm {
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving time */
};
1.3 获取本地时间
1.3.1 函数名
Localtime
1.3.2 函数原形
struct tm *localtime(consttime_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格式的时间
1.5 获取高精度时间
1.5.1 函数名
Gettimeofday
1.5.2 函数原形
int gettimeofday(struct timeval *tv, structtimezone *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到现在的秒数和微秒数
Tzone 通常为空NULL
struct timeval {
time_t tv_sec; /* seconds */
微秒suseconds_t tv_usec; /* microseconds */
};
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h> malloc头文件
int main()
{
structtimeval *vl; 系统编译不会分配空间导致段错误
start =(struct timeval*)malloc(sizeof(struct timeval)); 申请空间
gettimeofday(vl,NULL);
printf("%time_t\n",vl->tv_sec); int会报错说tv sec为time_t类型
return 0;
}
int main()
{
structtimeval vl; 直接定义结构体无需分配空间
gettimeofday(&vl,NULL);
printf("%time_t\n",vl.tv_sec);
return 0;
}
第2类 系统调用文件编程类
2.1 打开文件
2.1.1 函数名
open
2.1.2 函数原形
intopen(const char *pathname, int flags);
intopen(const char *pathname, int flags, mode_t);
2.1.3 函数功能
打开或者创建一个文件
2.1.4 所属头文件
<sys/types.h> <sys/stat.h> <fcntl.h>
2.1.5 返回值
打开成功返回文件描述符失败返回-1
2.1.6 参数说明
Pathname:要打开的文件名(包含路径)
flags:文件打开标志
_O_APPEND:以追加的方式打开文件
_O_CREAT: 当文件不存在创建该文件
Mode:一定是在flag中使用了create标志用于表示文件权限
2.2 创建文件
2.2.1 函数名
Create
2.2.2 函数原形
int creat(const char *pathname, mode_t mode);
2.2.3 函数功能
创建一个文件并以只写的方式打开该文件
2.2.4 所属头文件
<sys/types.h><sys/stat.h><fcntl.h>
2.2.5 返回值
成功返回文件描述符 失败返回-1
2.2.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_tcount);
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_tcount);
2.5.3 函数功能
向一个打开的文件写入数据
2.5.4 所属头文件
<unistd.h>
2.5.5 返回值
成功返回写入的字节数 失败返回-1
2.5.6 参数说明
fd:要读取数据的文件描述符
count:希望写入的字节数
buf:用来指向写入的数据来自buf指向的空间
2.6 定位文件
2.6.1 函数名
leesk
2.6.2 函数原形
Off_t lseek(int fd, off_t offset , intwhence);
2.6.3 函数功能
重新定位文件的读写位置
2.6.4 所属头文件
<sys/types.h> <unistd.h>
2.6.5 返回值
成功返回移动后的文件指针距离文件头的位置 失败-1
2.6.6 参数说明
Fd:操作文件对象
Offect:指针偏移量
Whence:指针开始移动的基础位置(文件头 文件中间 文件末尾)
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 打开文件
fopen
3.1.2 函数原形
FILE *fopen(const char *path, constchar *mode);
3.1.3 函数功能
打开文件
3.1.4 所属头文件
<stdio.h>
3.1.5 返回值
成功返回文件指针 失败返回空指针
3.1.6 参数说明
Path:指定打开的文件的名字(包含路径)
Mode:打开模式
如果使用r+如果不存在则创建文件否者将清空文件内容
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 参数说明
Stream:指向读取的文件
Nmemb:读取的数据块数
Size:每块数据的大小
Ptr:指向读取出来后的数据保存位置
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 参数说明
Stream:指向写入的文件
Nmemb:读取的数据块数
Size:每块数据的大小
Ptr:指向写入数据保存位置
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开头, SEEK_CUR,当前位置or SEEK_END,文件结尾
第4类 多进程编程类
在vfork中父进程可以用return和exit进行退出而子进程只能用exit退出
exit(参数为1表示异常退出为0表示正常退出)
exit头文件为<stdlib.h>
getpid
4.1 创建进程
4.1.1 函数名
fork
4.1.2 函数原形
pid_t fork(void);
4.1.3 函数功能
创建一个子进程
4.1.4 所属头文件
<unistd.h>
4.1.5 返回值
成功在父进程中返回子进程PID在子进程中返回0
失败返回-1
4.1.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.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 返回值
成功返回终止的那个子进程PID
失败返回-1
4.3.6 参数说明
Status :记录子进程的退出状态
wait(NULL)
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:可执行文件运行所需要的参数
第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]读端
5.2 创建有名管道
5.2.1 函数名
mkfifo
5.2.2 函数原形
int mkfifo(const char *pathname, mode_tmode);
5.2.3 函数功能
创建有名管道(创建fifo文件)
5.2.4 所属头文件
<sys/types.h> <sys/stat.h>
5.2.5 返回值
成功返回0 失败返回-1
5.2.6 参数说明
Pathname:创建文件的名字(包含路径)
Mode:待创建的文件的权限
当没有读进程访问管道时写进程会进入阻塞状态直到读进程进行
5.3 删除有名管道
5.3.1 函数名
Unlike
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:大于0指向接收信号的进程
Sig:指明要发送的信号
6.2 处理信号
6.2.1 函数名
signal
6.2.2 函数原形
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_thandler);
6.2.3 函数功能
设置信号的处理方式
6.2.4 所属头文件
<signal.h>
6.2.5 返回值
成功;返回处理函数指针 失败:返回sig_error
6.2.6 参数说明
Signum:用来指明要处理的信号
Handler:对应信号的处理方式
第8类 信号量编程类
8.1 创建/打开信号量集合
8.1.1 函数名
semget
8.1.2 函数原形
int semget(key_t key, int nsems, intsemflg);
8.1.3 函数功能
获取信号量集合的标识符
当k所指的信号量不存在时可用ipc_creat 创建一个信号量集合
8.1.4 所属头文件
<sys/types.h> <sys/ipc.h> <sys/sem.h>
8.1.5 返回值
成功:返回信号量集合的标识符 失败:返回-1
8.1.6 参数说明
Key:键值
Semfig:标志 可以取IPC_CREAT
Nsems:创建的信号量集合里面包含的信号量数目
8.1.7 范例代码
Key:
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;对信号量的操作方式(加1还是减1)
Nsops:要操作多少信号量
unsigned short sem_num; /* semaphore number */
short sem_op; /* semaphore operation */
short sem_flg; /* operation flags */
8.3 操作信号量集合
8.3.1 函数名
semctl
8.3.2 函数原形
int semctl(int semid, int semnum, int cmd,...);
8.3.3 函数功能
操作信号量集合
8.3.4 所属头文件
<sys/types.h> <sys/ipc.h> <sys/sem.h>
8.3.5 返回值
成功:返回0 失败:返回-1
8.3.6 参数说明
Cmd:命令有10种格式
Semid:要操作的信号量标识符
Semnum:信号量编号
第9类共享内存通讯
9.1 创建/打开共享内存
9.1.1 函数名
Shmget
9.1.2 函数原形
int shmget(key_t key, size_t size, intshmflg);
9.1.3 函数功能
创建共享内存
9.1.4 所属头文件
<sys/ipc.h> <sys/sem.h>
9.1.5 返回值
成功:返回共享内存标识符 失败:返回-1
9.1.6 参数说明
key:标识共享内存的键值0/IPC_PRIVATE(创建一个新的共享内存)
size:共享内存的大小
shmfig:创建共享内存标志0:取共享内存标识符,若不存在则函数会报错
IPC_CREAT:当shmflg&IPC_CREAT为真时,如果内核中不存在键值与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存,返回此共享内存的标识符
shmid = shmget(IPC_PRIVATE, SIZE,IPC_CREAT|0600 ) ;
9.2 映射共享内存
9.2.1 函数名
Shmat
9.2.2 函数原形
void *shmat(int shmid, const void *shmaddr,int shmflg);
9.2.3 函数功能
映射共享内存
9.2.4 所属头文件
<sys/types.h> <sys/shm.h>
9.2.5 返回值
成功:返回共享内存指针 失败:返回-1
9.2.6 参数说明
shmid:标识共享内存标识符
shmaddr:指定共享内存映射地址的位置,直接为NULL让内核寻找合适位置
shmflag:SHM_RDONLY:只读模式其它为读写模式
shmaddr = (char *)shmat( shmid, NULL, 0 ) ;
9.3 分离共享内存
9.3.1 函数名
Shmdt
9.3.2 函数原形
int shmdt(void* addr);
9.3.3 函数功能
取消共享内存与用户进程之间的映射
9.3.4 所属头文件
<sys/shm.h>
9.3.5 返回值
成功:返回0 失败:返回-1
9.3.6 参数说明
addr:shmat的返回值。
9.4 共享内存操作
9.4.1 函数名
Shmctl
9.4.2 函数原形
int shmctl(int shmid, int cmd, structshmid_ds *buf);
9.4.3 函数功能
共享内存操作(包括删除共享内存)
9.4.4 所属头文件
<sys/shm.h> <sys/ipc.h>
9.4.5 返回值
成功:返回0 失败:返回-1
9.4.6 参数说明
shmid:共享内存标识符。
Cmd: IPC_STAT得到共享内存的状态 IPC_SET改变共享内存的状态
IPC_RMID删除共享内存
Buf:是一个结构体指针。IPC_STAT的时候,取得的状态放在这个结构体中。如果要改变共享内存的状态,用这个结构体指定
1.IPC_RMID命令实际上不从内核删除一个段,而是仅仅把这个段标记为删除,实际的删除发生最后一个进程离开这个共享段时。
2.当cmd为IPC_RMID时,第三个参数应为NULL。呵呵,大部分我们都是这样做,用这个函数删除共享内存。
第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 返回值
成功:返回消息队列标识符 失败:返回-1
10.1.6 参数说明
Key:对应的键值
Msgflg:IPC_CREAT如果内核中没有与key值相对应的队列,(key为IPC_PRIVATE)则创建它。
IPC_EXCL当和IPC_CREAT一起使用时,如果队列已经存在,则失败。
IPC_NOWAIT无法得到满足时不阻塞
if((qid =msgget( keyval, IPC_CREAT | 0660 )) == -1)
10.2向消息队列发送数据
10.2.1 函数名
Msgsent
10.2.2 函数原形
int msgsnd(int msqid, const void *msgp,size_t msgsz, int msgflg);
10.2.3 函数功能
发送数据
10.2.4 所属头文件
<sys/ipc.h> <sys/msg.h><sys/types.h>
10.2.5 返回值
成功:返回0 失败:返回-1
10.2.6 参数说明
Msqid:消息队列标识符
Msgp:指向消息缓冲区的指针,此位置用来暂时存储发送和接收的消息,是一个用户可定义的通用结构,形态如下
structmsgbuf {
longmtype; /* 消息类型(第几种),必须 > 0 */
charmtext[1]; /* 消息文本(首地址) */
};
Msgsz:消息大小
Msgflg:消息类型IPC_NOWAIT
10.3从消息队列取数据
10.3.1 函数名
Msgrcv
10.3.2 函数原形
int msgrcv(int msqid, const void *ptr,size_t msgsz, long type ,int flg);
10.3.3 函数功能
获取消息队列信息
10.3.4 所属头文件
<sys/ipc.h> <sys/msg.h><sys/types.h>
10.3.5 返回值
成功:返回数据长度 失败:返回-1
10.3.6 参数说明
减去sizeof(long)是因为要减去结构体第一个变量的大小
取过数据后消息将被删除
10.4消息队列操作函数
10.4.1 函数名
Msgctl
10.4.2 函数原形
int msgctl(int msqid, int cmd, structmsqid_ds *buf);
10.4.3 函数功能
获取消息队列信息
10.4.4 所属头文件
<sys/ipc.h> <sys/msg.h><sys/types.h>
10.4.5 返回值
成功:返回0 失败:返回-1
10.4.6 参数说明
Cmd:IPC_STAT 读取消息队列的数据结构msqid_ds,并将其存储在b u f指定的地址中。
IPC_SET 设置消息队列的数据结构msqid_ds中的ipc_perm元素的值。这个值取自buf参数。
IPC_RMID从系统内核中移走消息队列。
if( msgctl(qid, IPC_RMID, 0) == -1)
第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>
11.1.5 返回值
成功:返回0 失败:返回错误编号
11.1.6 参数说明
tidp:线程id
attr:线程属性(通常为空)
start_rtn:线程要执行的函数
arg:start的参数
11.2 线程终止
11.2.1 函数名
Pthread_exit
11.2.2 函数原形
void pthread_exit(void *retval);
11.2.3 函数功能
终止线程
11.2.4 所属头文件
<pthread.h>
11.2.5 返回值
成功:返回0 失败:返回返回错误标号
11.2.6 参数说明
Retval:线程退出返回的指针(自动填充)
11.3 线程等待
11.3.1 函数名
Pthread_join
11.3.2 函数原形
int pthread_join(pthread_t thread, void**retval);
11.3.3 函数功能
线程等待直到线程结束
11.3.4 所属头文件
<pthread.h>
11.3.5 返回值
成功:返回信号量集合的标识符 失败:返回-1
11.3.6 参数说明
thread :线程id
retval:线程退出返回的指针
11.3.7 范例代码
第12类tcp网络编程
12.1 创建套接字
12.1.1 函数名
Socket
12.1.2 函数原形
int socket(int domain, int type, intprotocal);
12.1.3 函数功能
创建套接字
12.1.4 所属头文件
<sys/socket.h>
12.1.5 返回值
成功:返回套接字描述符 失败:返回-1
12.1.6 参数说明
domain:协议域,又称协议族(family)。常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)、AF_ROUTE等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。
type:指定Socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的UDP服务应用。
protocol:指定协议。常用协议有IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。
注意:1.type和protocol不可以随意组合,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当第三个参数为0时,会自动选择第二个参数类型对应的默认协议。
12.2 绑定地址
12.2.1 函数名
Bind
12.2.2 函数原形
Int bind(SOCKET socket,const struct sockaddr* address, socklen_t address_len);
12.2.3 函数功能
将地址绑定到套接字
12.2.4 所属头文件
<sys/socket.h>
12.2.5 返回值
成功:返回0 失败:返回-1
12.2.6 参数说明
socket:是一个套接字描述符。
address:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号。
address_len:确定address缓冲区的长度。
12.3 设置监听端口
12.3.1 函数名
Listen
12.3.2 函数原形
int listen(int sockfd, int backlog);
12.3.3 函数功能
设置监听端口个数
12.3.4 所属头文件
<sys/socket.h> <sys/types.h>
12.3.5 返回值
成功:返回0 失败:返回-1
12.3.6 参数说明
Sockfd:一个已绑定未被连接的套接字描述符
Backlog:连接请求队列(queue of pendingconnections)的最大长度(一般由2到4)。用SOMAXCONN则由系统确定。
12.4 等待连接
12.4.1 函数名
Accept
12.4.2 函数原形
int accept( int sockfd, struct socketaddr* addr, socklen_t* len);
12.4.3 函数功能
接收连接请求
12.4.4 所属头文件
<sys/socket.h> <sys/types.h>
12.4.5 返回值
成功:返回套接字描述符:返回-1
12.4.6 参数说明
sockfd:套接字描述符。
addr:返回连接着的地址
len:接收返回地址的缓冲区长度
12.5 发送数据
12.5.1 函数名
Send
12.5.2 函数原形
int send( int sockfd, const void *buf, size_t nbytes, int flags);
12.5.3 函数功能
发送数据
12.5.4 所属头文件
<sys/socket.h> <sys/types.h>
12.5.5 返回值
成功:返回发送的字节数 失败:返回-1
12.5.6 参数说明
Buf:待发送的缓冲区
nbytes:希望发送字节大小
flag:调用方式标志位, 一般为0, 改变Flags,将会改变Sendto发送的形式
12.6 接收数据
12.6.1 函数名
Recv
12.6.2 函数原形
int recv( int sockfd, const void *buf, size_t nbytes, int flags);
12.6.3 函数功能
接收数据
12.6.4 所属头文件
<sys/socket.h> <sys/types.h>
12.6.5 返回值
成功:返回发送的字节数 失败:返回-1
12.6.6 参数说明
Buf:待接收的缓冲区
nbytes:希望接收字节大小
flag:调用方式标志位, 一般为0, 改变Flags,将会改变Sendto发送的形式
12.7 连接服务器
12.7.1 函数名
Connect
12.7.2 函数原形
int connect( int sockfd, const struct sockaddr *addr,socklen_tlen);
12.7.3 函数功能
连接服务器
12.7.4 所属头文件
<sys/socket.h> <sys/types.h>
12.7.5 返回值
成功:返回0 失败:返回-1
12.7.6 参数说明
套接字描述符
指向数据结构sockaddr的指针,其中包括目的端口和IP地址
参数二sockaddr的长度,可以通过sizeof(struct sockaddr)获得