开发板上的微信语音聊天功能
1.录音并发送给对方
难点:录音接收之后如何保存到本地开发板中
2.按住屏幕上的按钮开始录音,录完音之后松开按钮,自动发送(降低难度:点击触摸屏上的录音按钮就开始录音,录完之后发送)
3.收到语音之后,要有背景提示音,图标提示
4.发送文件
源程序如下:
- #include "myhead.h"
- /*
- tcp通信,boy
- */
- int iphonex;
- void *recvmsgg(void *arg)
- {
- int ret;
- int size = 0;
- char msgbuf[20];
- while(1)
- {
- //接受对方发过来的wav的具体大小
- ret=recv(iphonex,&size,4,0);
- printf("第一个recv返回值是:%d %d\n",ret,size);
- if(size > 20)
- {
- //接收wav
- char buf[99];
- //创建空白wav
- int fd = open("1.wav", O_CREAT|O_RDWR|O_TRUNC);
- if(fd == -1)
- {
- printf("open wav失败!\n");
- return;
- }
-
- //但是recv不能一次性接收!!!!????
- while(1)
- {
- bzero(buf,99);
- ret=recv(iphonex,buf,99,0);
- printf("第二个recv返回值是:%d %s\n",ret,buf);
- //把buf里面的内容写到空白wav里
- write(fd,buf,ret);
-
- if(ret < 99)
- {
- close(fd);
- break;
- }
- }
- }
- else
- {
- bzero(msgbuf,20);
- ret=recv(iphonex,msgbuf,20,0);
- printf("6818发来信息: %s\n",msgbuf);
- }
-
-
-
-
- }
- }
- int main()
- {
-
-
- int addrsize=sizeof(struct sockaddr_in);
- int ret;
- char buf[99];
- //定义ipv4地址结构体变量,用于存放对方的ip和端口号
- struct sockaddr_in girladdr;
- //初始化该结构体变量
- bzero(&girladdr,sizeof(girladdr)); //memset()也行
- girladdr.sin_family=AF_INET;
- girladdr.sin_addr.s_addr=inet_addr("192.168.110.128");
- girladdr.sin_port=htons(10003);
-
- //买手机 --》创建tcp套接字
- iphonex=socket(AF_INET,SOCK_STREAM,0);
- if(iphonex==-1)
- {
- perror("create sock failed!\n");
- return -1;
- }
- //不绑定,绑定和不绑定是有区别的
- //拨号,连接女朋友
- ret=connect(iphonex,(struct sockaddr *)&girladdr,addrsize);
- if(ret==-1)
- {
- perror("拨号失败!\n");
- return 0;
- }
- pthread_t myid;
- //新建一个线程专门用于接收来自女朋友的信息
- pthread_create(&myid,NULL,recvmsgg,NULL);
-
- while(1)
- {
- //发送信息
- bzero(buf,20);
- printf("请输入你要发送的内容!\n");
- fgets(buf,20,stdin);
- ret=send(iphonex,buf,20,0);
- printf("send返回值是:%d\n",ret);
- }
-
- return 0;
- }
复制代码
所有资料51hei提供下载:
tcp版本.rar
(485.21 KB, 下载次数: 12)
|