版权声明:本文为博主原创文章,未经博主允许不得转载。 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
#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(¶ms);
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;
}