栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux网络编程可能需要用到的参数总结

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux网络编程可能需要用到的参数总结

目录

1.socket 创建套接字(可以理解为网络的一个通道或者函数接口) 

2.bind绑定套接字和服务地址

3.listen  监听套接字

4.accept等待客户端连接

5.recv 接收数据,成功返回数据的实际长度,失败返回-1。

6. connect客户端连接服务器

7.write(与read参数一致)

 8.signal信号

9.sprintf:将多个不同类型的数据存放在一个字符串里面

10.fscanf和scanf的区别:fscanf是从文件中读取数据,scanf是从屏幕上读取数据

1.open:打开或新建一个文件

         2.close:关闭一个已经打开的文件

3.lseek 定位一个已经打开的文件

 进程

1.线程的创建

2.线程的终止:


1.socket 创建套接字(可以理解为网络的一个通道或者函数接口) 

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

man 手册:man socket

参数:domain:AF_INET(ipv4的地址族)

            type:SOCK_STREAM(流式套接字):tcp传输层协议(面向连接,数据顺序发送,一对一的可靠通信)

                     SOCK_DGRAM(报式套接字):udp传输层协议(无连接的通信,数据是打包成数据包发送的,不一定按顺序到达,效率很高)

             protocol:0(type类型对应的默认协议)

返回值:

        成功则返回流式套接字(特殊的文件描述符)sockfd 0~1023

        失败则返回-1。

2.bind绑定套接字和服务地址

bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数:sockfd(socket函数的返回值):流式套接字

            sockaddr:服务器结构体的地址
            addrlen:服务器结构体的长度

返回值:

        成功则返回0

        失败则返回-1。

3.listen  监听套接字

int listen(int sockfd,int backlog);

功能:设置套接字
参数:
    sockfd:socket函数的返回值:流式套接字
    backlog:最大同时等待队列长度(队列:先进先出),也就是最多同时连接服务器的客户端个数
返回值:

        成功返回0;

        失败返回-1。
注意:经过listen函数后,流式套接字会变成监听套接字

4.accept等待客户端连接


int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);

man 手册参考:man accept
功能:等待客户端连接
参数:
     sockfd:监听套接字

     addr:客户端的结构体地址
     addrlen:客户端结构体地址的长度
返回值:

        成功返回新的套接字;

        失败返回-1。

5.recv 接收数据,成功返回数据的实际长度,失败返回-1。

recv(int sockfd,void *buf,size_t len,int flags);(send,把消息发给客户端,参数与其一致,只是flags代表send的标识符)

参数: 

flags:recv的标识符,默认为0

6. connect客户端连接服务器

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

参数:

               const struct sockaddr *addr 客户端的结构体地址

                socklen_t addrlen客户端结构体地址的长度

   返回值:
           成功返回 0, 失败返回 -1 

7.write(与read参数一致)

函数原型:    ssize_t write(int fd, const void *buf, size_t count);
函数功能:    向一个已经打开的可写文件中写入数据
参数:           fd    --     文件描述符
                      buf   --     指定的缓冲区,指向一段内存单元
                      count --    请求写入的字节数

返回值:  

         成功返回写入的字节数,失败返回-1,通过errno设置错误码;
         write()的返回值通常与count不同,因此需要循环将全部待写的数据全部写入文件;

 8.signal信号

  signal(SIGINT,sig_close)

参数:

SIGINT:来自键盘的中断信号 ( ctrl + c ) 

9.sprintf:将多个不同类型的数据存放在一个字符串里面

10.fscanf和scanf的区别:fscanf是从文件中读取数据,scanf是从屏幕上读取数据

1.open:打开或新建一个文件

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

参数:

pathname    ----被打开的文件名( 可包含路径,没加文件路径表示在当前目录) 

flags            ----O_RDONLY:只读方式打开

                    ----O_RDWR:读写方式打开  //前三个参数必须选择一个进行填写

                    ----O_CREAT:如果该文件不存在,就新创建一个文件,并用第三个参数为其设置权限

                    ----O_EXCL:        如果使用O_CREAT时文件存在,则可返回错误消息。这一参数可测试文件是否存在
                       //O_NOCTTY:    使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端
                         O_TRUNC:    如文件已经存在,  那么打开文件时先删除文件中原有数据
                         O_APPEND:    以添加方式打开文件,所以对文件的写操作都在文件的末尾进行
 mode          --   被打开文件的存取权限
                         0标识这个数是8进制 
                         三个8进制数 1、文件拥有者读写权限 2、拥有着同组用户读写权限 3、其他用户读写权限
返回值:    

        调用成功返回文件描述符,失败返回-1并设置errno;// perror("open");

2.close:关闭一个已经打开的文件


     int close(int fildes);
    参数:fildes -- 要关闭文件的文件描述符
    返回值:

          成功返回0,出错返回-1,并设置errno;
    当一个进程终止时,该进程打开的所有文件都由内核自动关闭;
    关闭一个文件的同时,也释放该进程加在该文件上的所有记录锁;

3.lseek 定位一个已经打开的文件

   off_t lseek(int fd, off_t offset, int whence);
   参数:    

    fd                                        --     文件描述符
    offset                                  --    偏移量,每一读写操作所需要移动的距离, 单位是字节的数量,可正可负(向前移,向后移)
    whence(当前位置基点) -- SEEK_SET:当前位置为文件的开头,新的位置为偏移量的大小。
                                                 SEEK_CUR:当前位置为文件指针的位置, 新位置为当前位置加上偏移量。
                                                 SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏移量的大小。

返回值:

调用成功时,返回当前相对与文件开头的偏移量,以字节为单位
调用失败时返回-1,并修改errno的值;

 进程

进程的通信:管道/匿名管道、有名管道、共享内存、套接字、消息队列、信号量

同步:信号量;异步:互斥锁

注意:所有程序并不是同时运行的,CPU会分布时间片,进程是在CPU的调度下进行的,每个进程都分配4G虚拟内存空间。

pid_t pid;          //进程号

pid_t fork(void)      //功能:创建一个进程

成功:返回0,失败:-1;父进程1


fork()创建子进程
ps -ajx:查看进程状态

子进程先于父进程结束后,子进程会变成僵尸进程,需要父进程给儿子收尸。
#include 
#include 
pid_t wait(int *status);

eg:wait(NULL);

pid_t waitpid(pid_t pid,int *status,int options);

eg:

        waitpid(-1,NULL,0); //阻塞---wait(NULL);

        waitpid(-1,NULL,WNOHANG);//非阻塞状态

注意:父进程先于子进程结束后,子进程会变成孤儿进程,被init进程收养。

1.线程的创建

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

参数:
//第一个:pthread_t 类型的指针,需要给你回填一个线程标识,所以需要一个pthread_t 类型变量的地址,然后把线程标识给你进行回填;
//第二个:加const,说明只读不写, 指定pthread_arr_t *attr指针线程的属性,80%的时候写NULL,意为不进行线程标识的指定。
//第三个:void *(*start_routine) (void *)通过第四个参数void *arg传过去,用(void *)是最好用的,因为不知道你要返回什么类型

2.线程的终止:

3种方式:

(1)进程退出,线程从启动例程返回,返回值就是线程的退出码

(2)线程调用函数pthread_exit()函数

(3)被动退出:pthread_cancel(),线程被同一进程中的线程取消,线程结束后可以通过pthread_join()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号