欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Linux下多人聊天空间代码(共7页).doc

    • 资源ID:14404975       资源大小:28.50KB        全文页数:7页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux下多人聊天空间代码(共7页).doc

    精选优质文档-倾情为你奉上 Linux下多人聊天空间代码在相同目录下新建文件wwb.h、wwb.c、room.c,把下面相应的代码拷进这两个文件里;再建一个recv.txt,该文件用于保存和显示聊天记录。在Linux中,使用下面命令编译:gcc -o room room.c wwb.c 使用命令运行:./room 使用命令查看聊天记录:tail -f recv.txt/wwb.h头文件 int WriteLog(const char *format, .); /写日志文件char* GetSysTime(char* time); /得到系统时间/wwb.c 代码#include <time.h>#include <unistd.h>#include <stdio.h>#include <sys/mman.h>#include <fcntl.h>#include <string.h>#include <stdlib.h>#include <stdarg.h>int WriteLog(const char *format, .) FILE *fp; fp=fopen("recv.txt", "a+"); if(fp=NULL) return -1; va_list arg_ptr; va_start(arg_ptr, format); vfprintf(fp, format, arg_ptr); va_end(arg_ptr); fclose(fp); return 0;char* GetSysTime(char *out) time_t timep; struct tm *p; time(&timep); p=localtime(&timep); int year=(1900+p->tm_year); int month=(1+p->tm_mon); int day=p->tm_mday; int hour=p->tm_hour; int minute=p->tm_min; int second=p->tm_sec; sprintf(out,"%d-",year); if(month<10) sprintf(out+5,"0%d-",month); else sprintf(out+5,"%d-",month); if(day<10) sprintf(out+8,"0%d ",day); else sprintf(out+8,"%d ",day); if(hour<10) sprintf(out+11,"0%d:",hour); else sprintf(out+11,"%d:",hour); if(minute<10) sprintf(out+14,"0%d:",minute); else sprintf(out+14,"%d:",minute); if(second<10) sprintf(out+17,"0%d",second); else sprintf(out+17,"%d",second); return out;/*int main() char time50; int i=10; char *s="hello" WriteLog("%s,%d,%sn", GetSysTime(time),i,s);*/room.c 主程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include "wwb.h"#define BUFSIZE 255int main(int argc, char *argv) if (argc !=2) printf("Parameter(s): <username>n"); exit(1); char *username=argv1; /* char username16=0; do printf("请输入你的用户名:"); fgets(username,16,stdin); while(!(strcmp(username,"n");*/ in_port_t servPort = 5000; char *bcIP = "192.168.12.255" in_port_t bcPort = 5000; pid_t pid; pid = fork(); if(pid > 0) /Parent Process int sock1 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock1 < 0) printf("socket() failedn"); exit(1); int on = 1; setsockopt(sock1, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on); struct sockaddr_in bcAddr; memset(&bcAddr, 0, sizeof(bcAddr); bcAddr.sin_family = AF_INET; int rtnVal = inet_pton(AF_INET, bcIP, &bcAddr.sin_addr.s_addr); if (rtnVal = 0) printf("inet_pton() failed, invalid address stringn"); exit(1); else if (rtnVal < 0) printf("inet_pton() failedn"); exit(1); bcAddr.sin_port = htons(bcPort); ssize_t numBytes1=sendto(sock1,username, strlen(username), 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes1 < 0) printf("sendto() failedn"); exit(1); ssize_t numBytes2=sendto(sock1, "Hello!", strlen("Hello!"), 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes2 < 0) printf("sendto() failedn"); exit(1); while(1) char strMsg256 = 0; printf("you say:"); /scanf("%s",strMsg); fgets(strMsg, 256, stdin); if(strcmp(strMsg,"quitn")=0) memset(strMsg, strlen(strMsg),0); ssize_t numBytes3= sendto(sock1,username, strlen(username), 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes3 < 0) printf("sendto() failedn"); exit(1); ssize_t numBytes4=sendto(sock1,"Bye!n", strlen("Bye!"), 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes4 < 0) printf("sendto() failedn"); exit(1); exit(0); if(strcmp(strMsg,"n")=0); else ssize_t numBytes5 =sendto(sock1,username, strlen(username), 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes5 < 0) printf("sendto() failedn"); exit(1); ssize_t numBytes6 = sendto(sock1,strMsg , strlen(strMsg)-1, 0, (struct sockaddr*)&bcAddr, sizeof(bcAddr); if (numBytes6 < 0) printf("sendto() failedn"); exit(1); else if(pid = 0) /child process int sock2 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock2 < 0) printf("socket() failedn"); exit(1); struct sockaddr_in servAddr; memset(&servAddr, 0, sizeof(servAddr); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(servPort); if (bind(sock2, (struct sockaddr*) &servAddr, sizeof(servAddr) < 0) printf("bind() failedn"); exit(1); while(1) struct sockaddr_in fromAddr; socklen_t fromAddrLen = sizeof(fromAddr); char buffer1BUFSIZE = 0; ssize_t numBytes7= recvfrom(sock2, buffer1, BUFSIZE, 0, (struct sockaddr *) &fromAddr, &fromAddrLen); if (numBytes7 < 0) printf("recvfrom() failedn"); exit(1); char *fromuser=buffer1; char buffer2BUFSIZE = 0; ssize_t numBytes8 = recvfrom(sock2, buffer2, BUFSIZE, 0, (struct sockaddr *) &fromAddr, &fromAddrLen); if (numBytes8 < 0) printf("recvfrom() failedn"); exit(1); if(strcmp(buffer2,"Hello!")=0) char ctime50 = 0; WriteLog("%s Received:%s 已进入聊天室!n", GetSysTime(ctime),fromuser); else if(strcmp(buffer2,"Bye!")=0) char ctime50 = 0; WriteLog("%s Received:%s 已离开聊天室!n", GetSysTime(ctime),fromuser); else char ctime50 = 0; WriteLog("%s %s say: %sn", GetSysTime(ctime),fromuser,buffer2); 专心-专注-专业

    注意事项

    本文(Linux下多人聊天空间代码(共7页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开