电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章EDA/PLD基于Socket的UDP和TCP编程介绍

基于Socket的UDP和TCP编程介绍

11-20 00:29:48 | http://www.5idzw.com | EDA/PLD | 人气:999
标签:eda技术,eda技术实用教程,http://www.5idzw.com 基于Socket的UDP和TCP编程介绍,http://www.5idzw.com
                ser_addr.sin_port=htons(SERVER_PORT);
                if(bind(ser_sockfd,(struct sockaddr*)&ser_addr,sizeof(struct sockaddr_in))<0)
                  { /*绑定失败 */
                         fprintf(stderr,"Bind Error:%s\n",strerror(errno));
                        exit(1);
                }
            /*侦听客户端请求*/
        if(listen(ser_sockfd,BACKLOG)<0)
           {
                   fprintf(stderr,"Listen Error:%s\n",strerror(errno));
                   close(ser_sockfd);
                   exit(1);
           }
        while(1)
        {/* 等待接收客户连接请求*/
              cli_sockfd=accept(ser_sockfd,(struct sockaddr*) &        cli_addr,&addrlen);
              if(cli_sockfd<=0)
              {
                    fprintf(stderr,"Accept Error:%s\n",strerror(errno));
             }
              else
              {/*开始服务*/
                    recv(cli_addr,msg,MAX_MSG_SIZE,0); /* 接受数据*/
                   printf("received a connection from %sn", inet_ntoa(cli_addr.sin_addr));
                   printf("%s\n",msg);/*在屏幕上打印出来 */
                   strcpy(msg,"hi,I am server!");
                   send(cli_addr,msg,sizeof(msg),0); /*发送的数据*/
                   close(cli_addr);
                   }
             }
        close(ser_sockfd);
 }

  客户端的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,请求连接服务器,通过新的socket向客户端发送字符串" hi,I am client!"。最后关闭该socket。

main()
        {
               int cli_sockfd;/*客户端SOCKET */
               int addrlen;
               char seraddr[14];
               struct sockaddr_in ser_addr,/* 服务器的地址*/
                                    cli_addr;/* 客户端的地址*/
        char msg[MAX_MSG_SIZE];/* 缓冲区*/
         GetServerAddr(seraddr);
        cli_sockfd=socket(AF_INET,SOCK_STREAM,0);/*创建连接的SOCKET */
        if(ser_sockfd<0)
        {/*创建失败 */
        fprintf(stderr,"socker Error:%s\n",strerror(errno));
        exit(1);
        }
        /* 初始化客户端地址*/
        addrlen=sizeof(struct sockaddr_in);
        bzero(&ser_addr,addrlen);
        cli_addr.sin_family=AF_INET;
        cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);
        cli_addr.sin_port=0;
        if(bind(cli_sockfd,(struct sockaddr*)&cli_addr,addrlen)<0)
        {
        /*棒定失败 */
        fprintf(stderr,"Bind Error:%s\n",strerror(errno));
        exit(1);
         }
        /* 初始化服务器地址*/
        addrlen=sizeof(struct sockaddr_in);

上一页  [1] [2] [3] [4]  下一页

,基于Socket的UDP和TCP编程介绍
上一篇:线程解析(二)
关于《基于Socket的UDP和TCP编程介绍》的更多文章