用C语言实现在发送端控制台输入字符串并在接收端接收显示的功能。
- /*********************server.c****************/
- #include<stdio.h>
- #include<sys/types.h>
- #include<sys/stat.h>
- #include<fcntl.h>
- #include<termios.h>
- #define BAUDRATE B38400
- #define MODEMDEVICE "/dev/ttyS0"
- #define STOP '@'
- int main(){
- int fd,c=0,res;
- struct termios oldtio,newtio;
- char ch,s1[20];
- printf("start...\n");
- fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY);
- if(fd<0)
- {
- perror(MODEMDEVICE);
- exit(1);
- }
- printf("open...\n");
- tcgetattr(fd,&oldtio);
- bzero(&newtio,sizeof(newtio));
- newtio.c_cflag=BAUDRATE|CS8|CLOCAL|CREAD;
- newtio.c_iflag=IGNPAR;
- newtio.c_oflag=0;
- newtio.c_lflag=ICANON;
- tcflush(fd,TCIFLUSH);
- tcsetattr(fd,TCSANOW,&newtio);
- printf("writing...\n");
- while(1)
- {
- while((ch=getchar())!='@')
- {
- s1[0]=ch;
- res=write(fd,s1,1);
- }
- s1[0]=ch;
- s1[1]='\n';
- res=write(fd,s1,2);
- break;
- }
- printf("close...\n");
- close(fd);
- tcsetattr(fd,TCSANOW,&oldtio);
- return 0;
- }
- /**************client.c***************/
- #include<stdio.h>
- #include<sys/types.h>
- #include<fcntl.h>
- #include<termios.h>
- #define BAUDRATE B38400
- #define MODEMDEVICE "/dev/ttyS0"
- int main()
- {
- int fd,c=0,res;
- struct termios oldtio,newtio;
- char buf[256];
- printf("start ...\n");
- fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY);
- if(fd<0)
- {
- perror(MODEMDEVICE);
- exit(1);
- }
- printf("open...\n");
- tcgetattr(fd,&oldtio);
- bzero(&newtio,sizeof(newtio));
- newtio.c_cflag=BAUDRATE | CS8 | CLOCAL | CREAD;
- newtio.c_iflag=IGNPAR;
- newtio.c_oflag=0;
- newtio.c_lflag=ICANON;
- tcflush(fd,TCIFLUSH);
- tcsetattr(fd,TCSANOW,&newtio);
- printf("reading...\n");
- while(1)
- {
- res=read(fd,buf,255);
- buf[res]=0;
- printf("res=%d vuf=%s\n",res,buf);
- if(buf[0]=='a') break;
- }
- printf("close...\n");
- close(fd);
- tcsetattr(fd,TCSANOW,&oldtio);
- return 0;
- }
发送端截图:
接受端截图:
(-----------that's all-----------)