#include #include #define HOST "192.168.0.200" //通信先IPアドレス #define PORT 20000 //通信先ポート番号 main() { int sockid, len, fds, addrlen; fd_set fdset; struct timeval tm; struct sockaddr_in sndaddr; struct sockaddr_in rcvaddr; char sndbuff[BUFSIZ]; char rcvbuff[BUFSIZ]; sockid = socket( AF_INET, SOCK_DGRAM, 0 ); //通信路確保 memset((void *)&sndaddr,0,sizeof(sndaddr)); sndaddr.sin_family = AF_INET; sndaddr.sin_port = htons ( PORT ); sndaddr.sin_addr.s_addr = inet_addr( HOST ); addrlen = sizeof(struct sockaddr); while( 1 ){ //プログラム永久ループ //1)コマンド送信 fds = 1+sockid; FD_ZERO(&fdset); FD_SET(sockid,&fdset); tm.tv_sec = 1/*Timeout*/; tm.tv_usec = 0; if(select(fds,(fd_set *)NULL,&fdset,(fd_set *)NULL,&tm ) <= 0){ continue; //送信準備タイムアウト } strcpy( sndbuff, "1 mix"); sendto( sockid,(void *)sndbuff,strlen(sndbuff),0,(struct sockaddr *)&sndaddr,addrlen ); //2)データ受信 FD_ZERO(&fdset); FD_SET(sockid,&fdset); tm.tv_sec = 1/*Timeout*/; tm.tv_usec = 0; if(select(fds,&fdset,(fd_set *)NULL,(fd_set *)NULL,&tm ) <= 0){ continue; //受信タイムアウト } if((len=recvfrom(sockid,(void *)rcvbuff,BUFSIZ,0,(struct sockaddr *)&rcvaddr,&addrlen)) < 0){ continue; } rcvbuff[len] = (char)0; printf( "受信データ= %s\n", rcvbuff ); } }