美文网首页
Linux网络程序设计练习

Linux网络程序设计练习

作者: 樱桃小琦子 | 来源:发表于2020-04-25 11:32 被阅读0次

    进程间的通信和同步

    题目1:编写C语言程序,要求创建子进程,实现父进程通过管道的方式向子进程发送消息,子进程在收到消息后将消息打印在屏幕上。

    #include<unistd.h>
    #include<sys/types.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<limits.h>
    //想要知道应该包含什么头文件可以使用man命令查看函数的详情
    #define BUFSIZE PIPE_BUF
    
    void err_quit(char *msg)    //该函数被用于打印错误信息并退出程序 
    { 
        printf("%s",msg);
        exit(1);
    } 
    
    int main(void)
    {
        int pid;
        int fd[2];
        char buf[BUFSIZE]="hello,child!I am your parent!";
        int len;
        if(pipe(fd)<0)  //创建管道
        {
            err_quit("pipe failed!\n");
        }
        if((pid=fork())<0)
        {
            err_quit("fork failed!\n");
        }
        else if(pid>0)  //父进程操作 
        {
            close(fd[0]);
            write(fd[1],buf,strlen(buf));//从buf写到管道中 
            exit(0);
        }
        else    //子进程操作 
        {
            close(fd[1]);
            len=read(fd[0],buf,BUFSIZE);//从管道读到buf中 
            if(len<0)
            {
                err_quit("process failed when read a pipe!");
            }
            else
            {
                write(STDOUT_FILENO,buf,len);//从buf写到标准输出中 
            }
            exit(0);
        }
        return 0;
    }
    

    题目2:编写C语言程序,创建共享内存,实现多个进程通过共享内存实现信息交换。

    题目3:编写C语言程序,创建多个线程,实现多线程对某变量进行互斥访问。

    TCP网络编程

    题目1:基于TCP协议实现服务器程序和客户端程序,要求:
    服务器程序等待客户端连接,建立连接后,打印客户端IP地址和端口到屏幕,打印客户端请求的内容到屏幕,统计客户端请求的字节数并发送给客户端;
    客户端连接服务器,向服务器发送任意请求内容,接收服务器的相应内容,并打印到屏幕。

    题目2:在已知亚马逊主站域名(www.amazon.com)的前提下,通过调用gethostbyname()函数,来获取IP地址;通过该IP地址调用gethostbyaddr()来获取亚马逊主站的主机信息,并打印到控制台。

    题目3:编写基于TCP的server.c和client.c程序,要求使用recvmsg()和sendmsg()函数实现通信,通信内容可以自己定义。

    题目4:编写基于TCP的server.c和client.c程序,要求在server.c中使用select()函数实现IO复用,通信内容可以自己定义。

    题目5:编写基于TCP的server.c和client.c程序,要求在server.c中使用poll()函数实现IO复用,通信内容可以自己定义。

    相关文章

      网友评论

          本文标题:Linux网络程序设计练习

          本文链接:https://www.haomeiwen.com/subject/ypvhwhtx.html