on the client side I have this code
Socket socket = new Socket("10.0.0.10", 7800);
ParcelFileDescriptor socketWrapper = ParcelFileDescriptor.fromSocket(socket);
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(socketWrapper.getFileDescriptor());
mediaRecorder.prepare();
mediaRecorder.start();
How do I send this audio to a C ++ server and re-stream it to others using the app?
Server code
// Iniciarlizar winsock
WSADATA wsData;
WORD ver = MAKEWORD(2, 2);
int wsOk = WSAStartup(ver, &wsData);
if (wsOk != 0)
{
sampgdk::logprintf("Não foi possivel inicializar o winsock! Fechando...!");
return;
}
// Criar o soquete
SOCKET escutando = socket(AF_INET, SOCK_STREAM, 0);
if (escutando == INVALID_SOCKET)
{
sampgdk::logprintf("Não foi possível criar um socket! Fechando...");
return;
}
// Ligue a um endereço IP e a porta a um soquete
sockaddr_in hint;
hint.sin_family = AF_INET;
hint.sin_port = htons(54000);
hint.sin_addr.S_un.S_addr = INADDR_ANY;
bind(escutando, (sockaddr*)&hint, sizeof(hint));
// Diga ao winsock que o soquete é para ouvir
listen(escutando, SOMAXCONN);
// aguarde uma conexão
sockaddr_in client;
int clientSize = sizeof(client);
SOCKET clientSocket = accept(escutando, (sockaddr*)&client, &clientSize);
char host[NI_MAXHOST]; // Client's remote name
char service[NI_MAXHOST]; // Service (i.e port) the client is connect on
ZeroMemory(host, NI_MAXHOST);
ZeroMemory(service, NI_MAXHOST);
if (getnameinfo((sockaddr*)&client, sizeof(client), host, NI_MAXHOST, service, NI_MAXSERV, 0) == 0)
{
cout << host << " Conectado na porta " << service << endl;
}
else
{
inet_ntop(AF_INET, &client.sin_addr, host, NI_MAXHOST);
cout << host << " Conexão na porta " <<
ntohs(client.sin_port) << endl;
}
// tomada de escuta próxima
closesocket(escutando);
// while loop: aceita e faz eco da mensagem de volta ao cliente
char buf[4096];
while (true)
{
ZeroMemory(buf, 4096);
// Wait for client to send data
int bytesReceived = recv(clientSocket, buf, 4096, 0);
if (bytesReceived == SOCKET_ERROR)
{
cerr << "Error in recv(). Fechando" << endl;
break;
}
if (bytesReceived == 0)
{
cout << "Client disconnected" << endl;
break;
}
send(clientSocket, buf, bytesReceived + 1, 0);
// Echo message back to client
}
// Feche o soquete
closesocket(clientSocket);
// Desligar winsock
WSACleanup();