alsa例程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21496027/article/details/52681609
#include <alsa/asoundlib.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include"alsaexmple.h"
#define SERV_PORT 3000
int network() {

 int rc;
 snd_pcm_t *handle;
 snd_pcm_hw_params_t* params;
 unsigned int val;
 int dir;
 snd_pcm_uframes_t frames;
 int sockfd = 0;
 int client_len;
 NetPakge pakg;
 struct sockaddr_in addr_serv;
 struct sockaddr_in addr_client;
 sockfd = socket(AF_INET, SOCK_DGRAM, 0);
 memset(&addr_serv, 0, sizeof(struct sockaddr_in));
 addr_serv.sin_family = AF_INET; //协议族
 addr_serv.sin_port = htons(SERV_PORT);
 addr_serv.sin_addr.s_addr = htonl(INADDR_ANY);
 if (bind(sockfd, (struct sockaddr *) &addr_serv, sizeof(struct sockaddr_in)) < 0) {
   perror("bind");
   exit(1);
 }
 else {
  printf("bind sucess\n");
 }
 if (snd_pcm_open(&handle, "default", 0, 0) < 0) { }
 snd_pcm_hw_params_alloca(&params);
 snd_pcm_hw_params_any(handle, params);
 snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
 snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
 snd_pcm_hw_params_set_channels(handle, params, 2);
 val = 44100;
 snd_pcm_hw_params_set_rate_near(handle, params, &val, &dir);
 frames = 32;
 snd_pcm_hw_params_set_period_size_near(handle, params, &frames, &dir);
 rc = snd_pcm_hw_params(handle, params);{}
 snd_pcm_hw_params_get_period_size(params, &frames, &dir);
 snd_pcm_hw_params_get_period_time(params, &val, &dir);
 client_len = sizeof(struct sockaddr_in);
 NetPakge wang[120];
 while (1 ){
 pakg.size = recvfrom(sockfd, &pakg, sizeof(pakg), 0,(struct sockaddr *) &addr_client, &client_len);
 memcpy(&wang[1],&pakg,136);
 rc=snd_pcm_readi(handle, wang[1].buffer,frames);
  if(rc==(-32))
   {
   printf("begin recv=%d:\n",rc);
   snd_pcm_prepare(handle);
   }
  printf(" *888*\n");
 }
  snd_pcm_drain(handle);
  snd_pcm_close(handle);
 close(sockfd);
 return 0;
}
int main() {
 network();
 return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_21496027/article/details/52681609