⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 productclient.c

📁 是一套AT 命令
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <pthread.h>#include <semaphore.h>#include "gprs_modem.h"#define SERVERPORT 3200#define MAXDATASIZE 100char *DEV="/dev/ttyS0";int socketfd;sem_t sem_read,sem_write;void pthreadread(void *pthreadcom);void pthreadwrite(void);int main(int argc,char *argv[]) {      struct hostent *host;      struct sockaddr_in serv_addr;      pthread_t p_read,p_write;      int ret;      int com;            ret=sem_init(&sem_read,0,1);      ret=sem_init(&sem_write,0,0);      if(ret!=0) {         perror("sem_init error");      }    if(argc<2) {      fprintf(stderr,"Please enter the server's hostname!\n");      exit(1);     }       if((host=gethostbyname(argv[1]))==NULL) {        perror("gethostbyname error");        exit(1);     }    if((socketfd=socket(AF_INET,SOCK_STREAM,0))==-1) {         perror("socket error");         exit(1);     }     serv_addr.sin_family=AF_INET;     serv_addr.sin_port=htons(SERVERPORT);     serv_addr.sin_addr=*((struct in_addr*)host->h_addr);     bzero(&(serv_addr.sin_zero),8);     if(connect(socketfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1) {          perror("connect error");          exit(1);      }     if((com=Open_Init_COM(DEV))==-1)	   {   	   	   perror("open dev error");		     exit(1);	   } 	   ret=Gprs_MessageReady(com);     if(ret==0)      {  	   printf("receive message success\n");
	   }     	else	   {	         printf("AT COMMAND num=%d  %s EXECUTE ERROR\n",ret);	         exit(1);	   }         ret=pthread_create(&p_read,NULL,(void *)pthreadread,(void *)&com);      if(ret!=0)        {              perror("pthread read error");              exit(1);       }      ret=pthread_create(&p_write,NULL,(void *)pthreadwrite,NULL);      if(ret!=0)      {              perror("pthread write error");              exit(1);       }                   pthread_join(p_read,NULL);     pthread_join(p_write,NULL);          close(socketfd);      return 0;} void  pthreadread(void *pthreadcom) { 	    int threadcom=*(int *)pthreadcom;      int sendbytes;      int reval;      char buf[MAXDATASIZE];      struct shortmsg * pRevMsg=(struct shortmsg *)malloc(sizeof(struct shortmsg));      while(1) {        sem_wait(&sem_read);         printf("Please input Product ID or exit exit programm\n");        reval=Gprs_ReceiveMessage(threadcom,pRevMsg);        strcpy(buf,pRevMsg->msgcontent);        if(strncmp(buf,"exit",4)==0)  {             printf("exit programm\n");                          exit(1);        }        if((sendbytes=send(socketfd,buf,sizeof(buf),0))==-1) {            perror("send error");             exit(1);         }        sem_post(&sem_write);      }}void pthreadwrite(void) {      int recvbytes;      char buf[MAXDATASIZE];      while(1) {         sem_wait(&sem_write);         printf("recv buf\n");        if((recvbytes=recv(socketfd,buf,sizeof(buf),0))==-1) {            perror("recv error");            exit(1);         }         buf[recvbytes]='\0';         printf("recv is\n %s \n",buf);         sem_post(&sem_read);      }}         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -