#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #define MAXDIM 2048 #define BLUE //#undef BLUE int bluetooth_initclient_socket(char *str_addr) { struct sockaddr_rc addr; //bdaddr_t bdaddr; int s; printf("bluetooth_initclient_socket called\n"); /* Default options */ if ((s = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)) < 0) { perror("Can't create socket."); exit(1); } memset(&addr, 0, sizeof(addr)); addr.rc_family = AF_BLUETOOTH; //addr.rc_bdaddr = bdaddr; str2ba(str_addr, &addr.rc_bdaddr); //str2ba("00:10:C6:4D:38:AC", &addr.rc_bdaddr); addr.rc_channel = htobs(10); //channel printf("connecting...\n"); if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("Can't connect."); exit(1); } printf("Connection opened\n"); return s; } int tcp_initclient_socket(char *str_addr, int port) { struct sockaddr_in addr; struct in_addr inet_address; struct hostent *host_info; int s; printf("tcp_initclient_socket called\n"); if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("Can't create socket."); exit(1); } printf("Socket created, resolving address...\n"); if ((host_info = gethostbyname(str_addr)) == NULL ) printf ("Error in resolving"); memset(&addr, 0, sizeof(addr)); addr.sin_family = host_info->h_addrtype; addr.sin_port = htons(port); memcpy(&addr.sin_addr, host_info->h_addr, host_info->h_length); printf("Connecting...\n"); if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("Can't connect."); exit(1); } printf("Connection opened\n"); return s; } int main(int argc, char *argv[]) { int s; char *buffer, *tmpPtr; int nread; #ifdef BLUE s = bluetooth_initclient_socket(argv[1]); #else s = tcp_initclient_socket(argv[1], 2004); #endif if (!(buffer = malloc(MAXDIM))) { printf("Can't allocate data buffer\n"); exit(1); } printf("Receiving ...\n"); //Read buffers until EOF is reached int length = MAXDIM; tmpPtr = buffer; do { //tmpPtr += nread; nread = recv(s, tmpPtr, length, 0); //length -= nread; printf("nread value %d\n", nread); } while (nread > 0); close(s); }