当前位置:  技术问答>linux和unix

求大侠帮忙分析一个简单的socket程序。。

    来源: 互联网  发布时间:2016-10-07

    本文导语:  欲实现的功能如下:client从stdin读入一个shell命令(如date,ls这种有输出结果的命令),向server发送该命令,然后server执行命令后,将执行的结果返回给client,client再返回的结果打印出来。 源码如下: // server 端 #include...

欲实现的功能如下:client从stdin读入一个shell命令(如date,ls这种有输出结果的命令),向server发送该命令,然后server执行命令后,将执行的结果返回给client,client再返回的结果打印出来。
源码如下:

// server 端
#include        "unp.h"
#include        
#include       
int
main(int argc, char **argv)
{
        int                                     listenfd, connfd;
        struct sockaddr_in      servaddr;
        char                            buff[MAXLINE], line[MAXLINE];
        time_t                          ticks;
         int n=0, resue=1;
        char end[4]="end";
        char *ppp;
        listenfd = Socket(AF_INET, SOCK_STREAM, 0);
        setsockopt (listenfd,SOL_SOCKET,SO_REUSEADDR,&resue,sizeof(int));
        FILE* fpin;
        bzero(&servaddr, sizeof(servaddr));
        servaddr.sin_family      = AF_INET;
        servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
        servaddr.sin_port        = htons(13);   /* daytime server */
        Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
        Listen(listenfd, LISTENQ);
        connfd = Accept(listenfd, (SA *) NULL, NULL);

        while ((n =recv(connfd,buff,40,0))>0){
                printf("%dn",n);
                fflush(stdout);
                buff[n]=0;//  很重要!!        
                if ((fpin = popen (buff,"r"))==NULL)
                 err_sys("popen error"); 
        bzero(line,MAXLINE);
        for (;;){ 
        ppp= fgets(line,MAXLINE,fpin);
        send(connfd,line,strlen(line),0);
        if(ppp==NULL)      // end作为传输的结束符。
   {
        ppp = "end";
        send(connfd,ppp,strlen(ppp),0)
                 break;
        }

        }
        if (pclose(fpin)==-1)
        err_sys("pclose error");
//      memset(buff,40,0);
        }
        Close(connfd);
        exit(0);
 }

// client 端
#include        "unp.h"
int
main(int argc, char **argv)
{
        int                                     sockfd, n;
        char                            recvline[100];
        struct sockaddr_in      servaddr;
        char   cmdstring[40];
        if (argc != 2)
                err_quit("usage: a.out ");
        if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) 

    
 
 

您可能感兴趣的文章:

  • solaris,请大侠帮忙!
  • 紧急求救!!!大侠帮忙!!!
  • ipchains下FTP无法列举远端目录,大侠帮忙啊!!!(急!)
  • 下载一个声卡驱动,后缀是.sh.gz,不会安装,各位大侠帮忙~
  • Liunx安装,求详细安装文档,急用各位大侠帮忙!!!!
  • cron定时问题,请大侠帮忙。
  • 跪求啊,我的邮箱密码忘记了,那位大侠帮帮忙啊
  • 大家帮忙,我想用LINUX作为ADSL上网的服务器,请教各位大侠如何配置?
  • 关于session方面的问题!哪位大侠帮帮忙!?
  • qt大侠帮忙啊,mousemove消息接收问题
  • 我要做个公告板,请大侠帮忙。
  • 哪位大侠知道如何调试Qt程序? iis7站长之家
  • adsv1.2 for arm 新建工程出现问题?望大侠帮帮忙
  • vsftpd配置的奇怪问题,大侠帮忙!在线等!
  • 各位大侠帮忙,linux下面有类似 GetTickcount 的函数吗?就是得到从开机到当前的滴答(time tick)值。谢谢啦
  • 兄弟我的jb5光盘不能读了,那为大侠帮忙告知一个下载地址,不胜感激!
  • 请大侠帮忙,一定散分
  • 急需jbuilder!!!!大侠帮忙!(高分求助)
  • 一个比较简单的问题,那位大侠来帮帮忙
  • 诸位大侠帮忙,关于DB2
  • 哪位大侠能够推荐一下处理jpeg文件的程序,最好有源代码!!
  • 求助各位大侠:Linux下Ftp客户端程序编写
  • 各位大侠,想问问驱动程序中(linux或者windows平台)可否使用线程?
  • 哪位大侠能讲讲怎么将一个用EJB写的站点做成安装程序?
  • 那位大侠有代理服务器的程序?
  • 哪位大侠帮我看看这个程序。
  • 关于telnetd程序移植的问题,请了解Unix telnet过程的大侠帮忙看看
  • 等待大侠出手相救,在多线程程序中执行system函数导致CPU利用率不停的增长的问题。
  • 请问大侠,有什么方法能对JSP程序页面自动刷新。
  • to:那位大侠可以提供关于用JAVA实现FTP的客户端程序,
  • 哪位大侠知道如何调试Qt程序?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大侠,本人是新手上路,经理马上让做palm,我可是从0学起!有没有那位大侠给我介绍一点经验和好的技术论坛,谢了!
  • hotenM(CMP)大侠等EJB大侠进来!小问题请教!
  • 请教大侠,怎么选开发学习板?
  • 大侠请援手:有关动态连接库。
  • 写过BBS的大侠看过来!
  • 请各位大侠推荐两本Solaris的经典书籍?
  • 各位大侠,求助Linux下关机
  • 大侠们,我是新手,请教怎么判断串口是否有连接
  • 想各位大侠求教了,为什么我的jdbc驱动不支持absolute这个方法呢?
  • 数据恢复, 求大侠帮助, 急等!!!!!!!
  • 各位大侠,给点意见
  • JSP+数据库文本存取中的换行问题,请教大侠
  • 各位大侠:lock 命令怎么用?
  • 各位大侠,那有JBuilder书down? 那有PDF格式文件的阅读器?
  • 各位大侠,还有一问题请教,如下:
  • 请“路人甲”大侠进来来看看。。。多谢了。。
  • 请各位大侠介绍几本 UNIX 的书籍
  • 哪位大侠能提供一些Motif的电子书?
  • 后退+前进=重复提交,各位大侠怎么解决呢?
  • 哪位大侠知道mercur4.01邮箱服务器软件的识别号!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3