基于SIM300的GPRS网络通讯

//=============================================================    // 文件名称:tcp_echo_srv.c    // 功能描述:TCP Echo Server    // 维护记录:2011-8-15    V1.0    //=============================================================    #include <stdio.h>    #include <stdlib.h>    #include <string.h>                   // bzero    #include <unistd.h>    #include <sys/socket.h>    #include <netinet/in.h>    #include <arpa/inet.h>                    // inet_ntop    //=============================================================    // 语法格式:    void main(void)    // 实现功能:    主函数,建立一个TCP Echo Server    // 入口参数:    无    // 出口参数:    无    //=============================================================    i<span style="color:#3333ff;">nt main(int argc, char *argv[])   {       char recvbuf[2048];         // 接收缓冲区        int sockfd;             // 套接字               struct sockaddr_in servAddr;        // 服务器地址结构体        unsigned short port = 8000;     // 监听端口           if(argc > 1)             // 由参数接收端口        {           port = atoi(argv[1]);       }              printf("TCP Server Started at port %d!\n", port);              //setp  1:          创建TCP套接字        sockfd = socket(AF_INET, SOCK_STREAM, 0);                                                  if(sockfd < 0)       {           perror("Invalid socket");           exit(1);       }       //setp  2:          将socket套接字与端口号、本机IP地址绑定        bzero(&servAddr, sizeof(servAddr));          // 初始化服务器地址        servAddr.sin_family = AF_INET;               // 采用IPV4协议        servAddr.sin_port = htons(port);             // 邦定端口号        servAddr.sin_addr.s_addr = htonl(INADDR_ANY);    //绑定本机IP地址               printf("Binding server to port %d\n", port);              printf("servAddr.sin_addr.s_addr=%d\n",servAddr.sin_addr.s_addr);              if(bind(sockfd, (struct sockaddr*)&servAddr, sizeof(struct sockaddr)) != 0)       {           close(sockfd);           perror("binding err!");           exit(1);       }              //setp  3   将套接字设置为监听模式        if(listen(sockfd, 1) != 0)       {           close(sockfd);           perror("listen err!");           exit(1);       }       printf("waiting client...\n");       while(1)       {           char cliIP[INET_ADDRSTRLEN];                 // 用于保存客户端IP地址               size_t recvLen;           struct sockaddr_in cliAddr;          // 用于保存客户端地址            size_t cliAddrLen = sizeof(cliAddr);                                    // 必须初始化!!!            //setp  4:阻塞等待客户端的连接            int connfd = accept(sockfd, (struct sockaddr*)&cliAddr, &cliAddrLen);                                    // 获得一个已经建立的连接            if(connfd < 0)           {               close(sockfd);               perror("accept err!");               exit(1);           }           inet_ntop(AF_INET, &cliAddr.sin_addr.s_addr, cliIP, INET_ADDRSTRLEN);           printf("client ip = %s\n", cliIP);                      //setp  5:读取客户端发送的数据并回送给客户端            while((recvLen = read(connfd, recvbuf, 2048)) > 0)           {               write(connfd, recvbuf, recvLen);           }           close(connfd);           printf("client closed!\n");       }       close(sockfd);       return 0;   }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwysxd.html