void main() { ALport alp; FileDescriptor dacfd, sockfd; int udp_port = 7000; SynthState voices[2]; InitVoice(voices, 440); InitVoice(voices+1, 220); dacfd = InitAudio(&alp); sockfd = initudp(udp_port); if(sockfd<0) { perror("initudp"); return; } InitPriority(); InitOSC(voices, voices+1); MainLoop(alp, dacfd, sockfd, voices, voices+1); }
int main( int argc, char * argv[] ) { socketdesc sd; /* socket descriptor index */ long n; /* number of bytes received */ char sendline[MSGSIZE]; /* send buffer */ char recvline[MSGSIZE+1]; /* recieve buffer */ /* need an ip address.. localhost or 127.0.0.1 would work for our test case */ if (argc != 2 ) { fprintf( stderr, "echo <ip address>\n" ); exit(1); } initudp(); sd = openudp( FALSE, argv[1], 2007 ); if ( sd < 0 ) { fprintf( stderr, "error occured while connecting\n" ); exit(1); } while ( fgets( sendline, MSGSIZE, stdin ) != NULL ) { sendudp( sd, sendline, strlen(sendline), argv[1] ); n = recvudp( sd, recvline, MSGSIZE, NULL ); recvline[n] = '\0'; fputs(recvline, stdout); } closeudp( sd ); return 0; }
int main(int argc, char **argv) { int udp_port; /* port to receive parameter updates from */ struct sockaddr_in cl_addr; int clilen,maxclilen=sizeof(cl_addr); struct sockaddr_un ucl_addr; int uclilen,umaxclilen=sizeof(ucl_addr); int i,n; clilen = maxclilen; uclilen = umaxclilen; udp_port = -1; for (i=1; i < argc; ++i) { if (strcmp(argv[i], "-showbytes") == 0) { ShowBytes = TRUE; } else if (strcmp(argv[i], "-silent") == 0 || strcmp(argv[i], "-quiet") == 0) { Silent = TRUE; } else if (udp_port != -1) { goto usageError; } else { udp_port = atoi(argv[i]); if (udp_port == 0) { goto usageError; } } } if (udp_port == -1) { usageError: fprintf(stderr, "Usage\n\tdumpOSC portno [-showbytes] [-quiet]\n\t(responds to udp and UNIX packets on that port no)\n"); exit(1); } n = recvfrom(0, mbuf, MAXMESG, 0, &cl_addr, &clilen); if(n>0) { sockfd = 0; udp_port = -1; Synthmessage(mbuf, n, &cl_addr, clilen,sockfd) ; } else { sockfd=initudp(udp_port); usockfd=unixinitudp(udp_port); } if (!Silent) { printf("dumpOSC version 0.2 (6/18/97 Matt Wright). Unix/UDP Port %d \n", udp_port); printf("Copyright (c) 1992,1996,1997 Regents of the University of California.\n"); } if(sockfd>=0 && usockfd>=0) { fd_set read_fds, write_fds; int nfds; #define max(a,b) (((a) > (b)) ? (a) : (b)) nfds = max(sockfd, usockfd)+ 1; { int j; for(j=0;j<npolldevs;++j) if(polldevs[j].fd>=nfds) { nfds = polldevs[j].fd+1; /* printf("polldev %d\n", polldevs[j].fd); */ } } /* printf("nfds %d\n", nfds); */ caught_sigint = 0; sigset(SIGINT, catch_sigint); /* set sig handler */ while(!caught_sigint) { int r; back: FD_ZERO(&read_fds); /* clear read_fds */ FD_ZERO(&write_fds); /* clear write_fds */ FD_SET(sockfd, &read_fds); FD_SET(usockfd, &read_fds); { int j; for(j=0;j<npolldevs;++j) FD_SET(polldevs[j].fd, &read_fds); } r = select(nfds, &read_fds, &write_fds, (fd_set *)0, (struct timeval *)0); if (r < 0) /* select reported an error */ goto out; { int j; for(j=0;j<npolldevs;++j) if(FD_ISSET(polldevs[j].fd, &read_fds)) (*(polldevs[j].callbackfunction))(polldevs[j].fd,polldevs[j].dummy ); } if(FD_ISSET(sockfd, &read_fds)) { clilen = maxclilen; while( (n = recvfrom(sockfd, mbuf, MAXMESG, 0, &cl_addr, &clilen)) >0) { int r; /* printf("received UDP packet of length %d\n", n); */ r = Synthmessage(mbuf, n, &cl_addr, clilen, sockfd) ; if( sgi_HaveToQuit()) goto out; if(r>0) goto back; clilen = maxclilen; } } if(FD_ISSET(usockfd, &read_fds)) { uclilen = umaxclilen; while( (n = recvfrom(usockfd, mbuf, MAXMESG, 0, &ucl_addr, &uclilen)) >0) { int r; /* printf("received UNIX packet of length %d\n", n); */ r=Synthmessage(mbuf, n, &ucl_addr, uclilen,usockfd) ; if( sgi_HaveToQuit()) goto out; if(r>0) goto back; uclilen = umaxclilen; } } } /* End of while(!caught_sigint) */ closeudp(sockfd); out: ; } else perror("initudp"); return 0; }