找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4517|回复: 0
打印 上一主题 下一主题
收起左侧

C++ tcp通信进行语音文本信息收发(与微信类似)

[复制链接]
跳转到指定楼层
楼主
开发板上的微信语音聊天功能
     1.录音并发送给对方
                  难点:录音接收之后如何保存到本地开发板中
     2.按住屏幕上的按钮开始录音,录完音之后松开按钮,自动发送(降低难度:点击触摸屏上的录音按钮就开始录音,录完之后发送)
     3.收到语音之后,要有背景提示音,图标提示
     4.发送文件


源程序如下:
  1. #include "myhead.h"
  2. /*
  3.         tcp通信,boy
  4. */
  5. int iphonex;
  6. void *recvmsgg(void *arg)
  7. {
  8.         int ret;
  9.         int size = 0;
  10.         char msgbuf[20];
  11.         while(1)
  12.         {
  13.                 //接受对方发过来的wav的具体大小
  14.                 ret=recv(iphonex,&size,4,0);
  15.                 printf("第一个recv返回值是:%d  %d\n",ret,size);
  16.                 if(size > 20)
  17.                 {
  18.                         //接收wav
  19.                         char buf[99];
  20.                         //创建空白wav
  21.                         int fd = open("1.wav", O_CREAT|O_RDWR|O_TRUNC);
  22.                         if(fd == -1)
  23.                         {
  24.                                 printf("open wav失败!\n");
  25.                                 return;
  26.                         }
  27.                        
  28.                         //但是recv不能一次性接收!!!!????
  29.                         while(1)
  30.                         {
  31.                                 bzero(buf,99);
  32.                                 ret=recv(iphonex,buf,99,0);
  33.                                 printf("第二个recv返回值是:%d  %s\n",ret,buf);
  34.                                 //把buf里面的内容写到空白wav里
  35.                                 write(fd,buf,ret);
  36.                                
  37.                                 if(ret < 99)
  38.                                 {
  39.                                         close(fd);
  40.                                         break;
  41.                                 }
  42.                         }
  43.                 }
  44.                 else
  45.                 {
  46.                         bzero(msgbuf,20);
  47.                         ret=recv(iphonex,msgbuf,20,0);
  48.                         printf("6818发来信息: %s\n",msgbuf);
  49.                 }
  50.                
  51.                
  52.                
  53.             
  54.         }
  55. }
  56. int main()
  57. {
  58.        
  59.        
  60.         int addrsize=sizeof(struct sockaddr_in);
  61.         int ret;
  62.         char buf[99];
  63.         //定义ipv4地址结构体变量,用于存放对方的ip和端口号
  64.         struct sockaddr_in girladdr;
  65.         //初始化该结构体变量
  66.         bzero(&girladdr,sizeof(girladdr)); //memset()也行
  67.         girladdr.sin_family=AF_INET;
  68.         girladdr.sin_addr.s_addr=inet_addr("192.168.110.128");
  69.         girladdr.sin_port=htons(10003);
  70.        
  71.         //买手机 --》创建tcp套接字
  72.         iphonex=socket(AF_INET,SOCK_STREAM,0);
  73.         if(iphonex==-1)
  74.         {
  75.                 perror("create sock failed!\n");
  76.                 return -1;
  77.         }
  78.         //不绑定,绑定和不绑定是有区别的
  79.         //拨号,连接女朋友
  80.         ret=connect(iphonex,(struct sockaddr *)&girladdr,addrsize);
  81.         if(ret==-1)
  82.         {
  83.                 perror("拨号失败!\n");
  84.                 return 0;
  85.         }
  86.         pthread_t myid;
  87.         //新建一个线程专门用于接收来自女朋友的信息
  88.         pthread_create(&myid,NULL,recvmsgg,NULL);
  89.        
  90.         while(1)
  91.         {
  92.                 //发送信息
  93.                 bzero(buf,20);
  94.                 printf("请输入你要发送的内容!\n");
  95.                 fgets(buf,20,stdin);
  96.                 ret=send(iphonex,buf,20,0);
  97.                 printf("send返回值是:%d\n",ret);
  98.         }
  99.        
  100.         return 0;
  101. }
复制代码

所有资料51hei提供下载:
tcp版本.rar (485.21 KB, 下载次数: 12)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表