Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define DATA_SIZE 8192
- int main(int argc, const char * argv[]) {
- int sock;
- struct sockaddr_in broadcastAddr;
- char *broadcastIP;
- unsigned short broadcastPort;
- char sendString[100];
- int broadcastPermission;
- FILE *fptr;
- int fidIn;
- unsigned int iSamplesRead=0;
- unsigned char data[DATA_SIZE];
- unsigned long long millisecondsSinceEpoch=0;
- struct timeval tv;
- NSString * path = [[NSBundle mainBundle] pathForResource:@"2 copy" ofType: @"raw"];
- fptr = fopen([path cStringUsingEncoding:1], "r");
- if(fptr == NULL)
- {
- printf("Error!");
- exit(1);
- }
- broadcastIP = "224.0.0.0";
- broadcastPort = 5014;
- if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
- printf("socket() failed");
- broadcastPermission = 1;
- if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (void *) &broadcastPermission,
- sizeof(broadcastPermission)) < 0)
- printf("setsockopt() failed");
- memset(&broadcastAddr, 0, sizeof(broadcastAddr));
- broadcastAddr.sin_family = AF_INET;
- broadcastAddr.sin_addr.s_addr = inet_addr(broadcastIP);
- broadcastAddr.sin_port = htons(broadcastPort);
- sprintf(sendString,"arecord -f cd -t wav");
- printf("rn sendString %@",sendString);
- fidIn = fileno(fptr);
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"test_Output_Broadcast.wav"]];
- NSLog(@"Output Filepath : %@",filePath);
- for (;;)
- {
- bzero(sendString, strlen(sendString));
- sprintf(sendString,"###%010u",iSamplesRead++);
- printf("nr Sample Counter Starts: %d", iSamplesRead);
- printf("nr%s",sendString);
- if (sendto(sock, sendString, strlen(sendString), 0, (struct sockaddr *)
- &broadcastAddr, sizeof(broadcastAddr)) != strlen(sendString))
- //printf("sendto() sent a different number of bytes than expected");
- bzero(data,strlen(data));
- // Grab data from process execution
- ssize_t readSize = read(fidIn, data, DATA_SIZE);
- //size_t writeSize = fwrite(data, 1, 512, fptr);
- printf("rn readSize %ld n", readSize);
- if (readSize == 0) {
- char semahpor[10] = "END***";
- bzero(semahpor,strlen(semahpor));
- sprintf(semahpor,"END***");
- printf("nr Sample Counter Ends: %d", iSamplesRead);
- if (sendto(sock,semahpor, strlen(semahpor), 0, (struct sockaddr *)
- &broadcastAddr, sizeof(broadcastAddr)) != strlen(semahpor))
- printf("sendto() sent a different number of bytes than expected");
- fclose(fptr);
- }
- if (sendto(sock, data, readSize, 0, (struct sockaddr *)
- &broadcastAddr, sizeof(broadcastAddr)) != readSize) {
- printf("sendto() sent a different number of bytes than expected");
- }
- gettimeofday(&tv, NULL);
- millisecondsSinceEpoch = (unsigned long long)(tv.tv_sec) * 1000 + (unsigned long long)(tv.tv_usec) / 1000;
- bzero(sendString,strlen(sendString));
- sprintf(sendString,"%020llu$$$",millisecondsSinceEpoch);
- printf("nr epoch : %llu",millisecondsSinceEpoch);
- printf("nr%s",sendString);
- // Broadcast sendString in datagram to clients every 3 seconds
- if (sendto(sock,sendString, strlen(sendString), 0, (struct sockaddr *)
- &broadcastAddr, sizeof(broadcastAddr)) != strlen(sendString))
- printf("sendto() sent a different number of bytes than expected");
- }
- return NSApplicationMain(argc, argv);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement