嵌入式操作系统课程设计报告(编辑修改稿)内容摘要:

trcmp(recievemsgname,trans)==0) { return 1。 } if((fd=open(,O_RDWR|O_CREAT|O_APPEND,0666))0) { perror(open)。 printf(open\n)。 return 2。 } do { if((read_size=read(fd,amp。 cmpmsg,sizeof(cmpmsg))) 0) { perror(read)。 close(fd)。 return 2。 } if(read_size != sizeof(struct message) amp。 amp。 read_size !=0) { 嵌入式 操作系统课程 设计 19 close(fd)。 return 2。 } if(strcmp(recievemsgname,)==0) { close(fd)。 return 1。 } }while(read_size == sizeof(struct message))。 if((write_size=write(fd,recievemsg,sizeof(struct message)))0) { perror(write)。 close(fd)。 return 2。 } while(write_size!=sizeof(struct message)) { //write_size = 0writesize。 lseek(fd,write_size,SEEK_CUR)。 write_size=write(fd,recievemsg,sizeof(struct message))。 } printf(write file success\n)。 close(fd)。 return 0。 } int login_check(struct message *recievemsg) { int fd。 struct message cmpmsg。 int read_size。 if((fd=open(,O_RDONLY))0) { perror(open)。 return 2。 } do { if((read_size=read(fd,amp。 cmpmsg,sizeof(struct message)))0) { perror(read)。 close(fd)。 return 2。 } if(read_size != sizeof(struct message) amp。 amp。 read_size!=0) { close(fd)。 return 2。 } if((strcmp(recievemsgname,)==0)amp。 amp。 (strcmp(recievemsgmsg,)==0)) { close(fd)。 return 0。 } }while(read_size0)。 close(fd)。 return 1。 } /* void main() { struct message sendmsg。 printf(input name:\n)。 gets()。 printf(input mima:\n)。 gets()。 printf(%d\n,reg_check(amp。 sendmsg))。 // printf(%d\n,login_check(amp。 sendmsg))。 } 嵌入式 操作系统课程 设计 20 */ /************/ include include include include sys/ include i/ include include sys/ include sys/ include include include include sys/ include include sys/ define MAXLEN 1024 struct message { char flag[15]。 char name[10]。 int size。 char msg[MAXLEN]。 }。 struct msq { long msg_type。 char msg_text[5]。 }。 int qid = 1,fd = 1,sockfd,savefilefd=1。 char filefromname[10]。 void handleQuit(int signal_no) { if(fd 0) close(fd)。 close(sockfd)。 if(qid 0) { if((msgctl(qid,IPC_RMID,NULL))0) { printf(消息队列无法关闭 \n)。 exit(1)。 } } close(savefilefd)。 printf(程序正常退出 \n)。 raise(SIGQUIT)。 } void cutStr(char str[],char left[],int n,char right[],int m,char c) { int i,k,j。 for(i = 0。 i n。 i++) { if(str[i] == c) break。 } if(i == n) { i = 1。 } else { memset(left,0,strlen(left))。 for(k = 0。 k i。 k++) { left[k] = str[k]。 } } for(j = i+1。 j m。 j++) { if(str[j] == 39。 \039。 ) break。 right[ji1] = str[j]。 } left[i] = 39。 \039。 if(j m) right[ji1] = 39。 \039。 else right[m] = 39。 \039。 } void handlesendfile(void) { struct message filedata。 嵌入式 操作系统课程 设计 21 //printf(filefromname = %s \n,filefromname)。 do { memset(,0,sizeof())。 = read(savefilefd,1000)。 strcpy(,transf)。 strcpy(,filefromname)。 if ( == 0) { printf(文件传输完毕 \n)。 strcpy(,end$)。 } else if ( 0) { printf( = %s\n,)。 send(sockfd,amp。 filedata,sizeof(struct message),0)。 } else { printf(读取文件失败 ,文件传输中止\n)。 break。 } } while ( 0)。 close(savefilefd)。 savefilefd = 1。 } void handlerecvmsg(int *sockfd) { int connfd = *sockfd。 int nread。 char buf[1024]。 char str[1024]。 struct message recvmsg。 time_t timep。 struct msq msg。 if(( fd = open(,O_RDWR|O_CREAT|O_APPEND)) 0) { printf(打开聊天记录文件失败 !)。 exit(1)。 } // printf(%d\n,fd)。 if((qid = msgget(2222,IPC_CREAT|0666)) == 1) { printf(创建消息队列失败 \n)。 exit(1)。 } = getpid()。 strcpy(,OK)。 while(1) { nread = recv(connfd,amp。 recvmsg,sizeof(struct message),0)。 if(nread == 0) { printf(与服务器断开了连接 \n)。 close(fd)。 close(connfd)。 exit(0)。 } else if (strcmp(,all) == 0) { time (amp。 timep)。 sprintf(str,%s%s 发 给 所 有人 :%s\n\n,ctime(amp。 timep),g)。 } else if (strcmp(,sermsg) == 0) { time (amp。 timep)。 printf(%s 服 务 器 发 给 所 有人 :%s\n\n,ctime(amp。 timep),)。 continue。 } else if (strcmp(,view) == 0) { time (amp。 timep)。 printf(%s 当 前 在 线 客 户 嵌入式 操作系统课程 设计 22 端 :\n%s\n\n,ctime(amp。 timep),)。 continue。 } else if (strcmp(,trans) == 0) { pthread_t pid。 if (strcmp(,agree) == 0) { strcpy(filefromname,)。 //创建线程发送文件 pthread_create(amp。 pid,NULL,(void *)handlesendfile,NULL)。 } else if(strcmp(,disagree) == 0) { printf(对方拒绝接收文件 \n)。 close(savefilefd)。 savefilefd = 1。 } else if(strcmp(,noexist) == 0) { printf(该客户端不存在 \n)。 close(savefilefd)。 savefilefd = 1。 } else { strcpy(filefromname,)。 printf(%s 向你请求传名为 %s 文件 , 是 否 同 意 接 受 ?[agree( 同意 )|disagree( 不同意 )]\n,)。 savefilefd = 0。 } continue。 } else if(strcmp(,transf) == 0) { int n。 if(strcmp(,end$) == 0) { printf(文件传输结束 \n)。 close(savefilefd)。 savefilefd = 1。 continue。 } else { n=write(savefilefd,)。 // printf( = %s\n,)。 while(n amp。 amp。 n 0) { lseek(savefilefd,n,SEEK_CUR)。 n=write(savefilefd,)。 } } continue。 } else { time (amp。 timep)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。