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

📄 ser.c

📁 网络服务器源代码
💻 C
字号:
#include <stdio.h>#include <string.h>#include <pthread.h>#include <unistd.h>#include <fcntl.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <termios.h>#include <fcntl.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include "ser.h"//#include <sys/pthreadtypes.h>int gi=0;FILE *fp;void thread1(void)   {   int i;   while(1)     {     i=i+1;     gi=gi+1;     printf("this is thread1\n");     sleep(10);     }   }// read card id threadvoid read_id(){unsigned char read_command[7]={0x05,0x00,0x01,0x02,0xbc,0x57};char *dev="/dev/ttyS1";int fd,nread;char receive_buffer[0x30];int i;fd=OpenSerDev(dev);while(1)   {   write(fd,read_command,6);   if((nread=read(fd,receive_buffer,20))>0)       {        printf("char ");	for(i=0;i<nread;i++)	  {       	  printf("%x",receive_buffer[i]);          }//  	printf("%s\n",receive_buffer);        printf("\n");	usleep(100000);       }//   printf("\n");   }}//socket process threadvoid socket_process_thread(int *socketfd){char receive_buffer[0x20];int receive_length;int accept_fd=*socketfd;while((receive_length=recv(accept_fd,receive_buffer,sizeof(receive_buffer),0))>0)   {   printf("receive char %s\n",receive_buffer);   fseek(fp,10,SEEK_END);   fwrite(receive_buffer,sizeof(receive_buffer),1,fp);      } //send(accept_fd,"abcdefghijk",20,0);close(accept_fd);}void NetServer(){struct sockaddr_in server_addr,client_addr;int sockfd;int addr_length;int accept_fd;int receive_length;char receive_buffer[0xff];pthread_t id;sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0)   {   perror("socket create error\n");   return;   }memset(&server_addr,0,sizeof(server_addr));server_addr.sin_family=AF_INET;server_addr.sin_port=htons(9000);if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr)))  {  perror("bind error\n");  return;  }if(listen(sockfd,32)<0)  {  perror("listen error\n");  return;  }addr_length=sizeof(client_addr);while(1)  {  accept_fd=accept(sockfd,(struct sockaddr *)&client_addr,&addr_length);  printf("accept\n");  if(accept_fd>0)     {     pthread_create(&id,NULL,(void *)socket_process_thread,&accept_fd);    }  }}void thread2(void){NetServer();}int OpenSerDev(char *Dev){  struct termios options;  int fd=open(Dev,O_RDWR|O_NOCTTY|O_NDELAY);  if(fd==-1)    {    perror("can't open serial port\n");    return -1;    }   else   {   tcgetattr(fd,&options);   options.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG);   options.c_cc[VMIN]=4;	//   options.c_oflag&=~OPOST;   options.c_cc[VTIME]=3;   fcntl(fd,F_SETFL,O_APPEND);//FASYNC);   //O_APPEND);//   cfmakeraw(&options);   tcsetattr(fd,TCSANOW,&options);      }     return fd;}//open or creat the filevoid  OpenFile(){//FILE *fp;char *str="abcdefghijljlasjdfj\n";if((fp=fopen("/mnt/test.txt","w+"))==NULL)   {    perror("create file failure\n");   }fputs(str,fp);//fclose(fp);}int  main(void)  {  int ret;  pthread_attr_t attr;  pthread_t id,id2,id3;  int fd;  int nread;  char buff[0x20];   size_t stack;  //  set_speed(fd,19200);  OpenFile();  ret=pthread_attr_init(&attr);  if(ret!=0)     printf("pthread init faulure\n");  pthread_attr_getstacksize(&attr,&stack);  printf("stack size %x \n",stack);  ret=pthread_create(&id,NULL,(void *)(thread1),NULL);  if(ret!=0)     printf("thread1 create failure\n");  ret=pthread_create(&id2,NULL,(void *)(thread2),NULL);  if(ret!=0)	printf("thread2 create failure %x\n",ret);  ret=pthread_create(&id3,NULL,(void *)(read_id),NULL);  if(ret!=0)	printf("read_id thread create failure\n");    while(1)     {     sleep(10);     }   pthread_join(id,NULL);  }  

⌨️ 快捷键说明

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