testj1939: remember if peername was provided
When peername was not provided, the program uses send() rather than sendto() so the API calls are better demonstratedpull/66/head
parent
77c08edead
commit
d66e6ce4ee
19
testj1939.c
19
testj1939.c
|
|
@ -88,6 +88,7 @@ int main(int argc, char *argv[])
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
uint8_t dat[128];
|
uint8_t dat[128];
|
||||||
|
int valid_peername = 0;
|
||||||
int todo_send = 0, todo_recv = 0, todo_echo = 0, todo_prio = -1;
|
int todo_send = 0, todo_recv = 0, todo_echo = 0, todo_prio = -1;
|
||||||
int todo_connect = 0, todo_names = 0;
|
int todo_connect = 0, todo_names = 0;
|
||||||
|
|
||||||
|
|
@ -125,8 +126,10 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argv[optind]) {
|
if (argv[optind]) {
|
||||||
if (strcmp("-", argv[optind]))
|
if (strcmp("-", argv[optind])) {
|
||||||
parse_canaddr(argv[optind], &peername);
|
parse_canaddr(argv[optind], &peername);
|
||||||
|
valid_peername = 1;
|
||||||
|
}
|
||||||
++optind;
|
++optind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,6 +150,8 @@ int main(int argc, char *argv[])
|
||||||
error(1, errno, "bind()");
|
error(1, errno, "bind()");
|
||||||
|
|
||||||
if (todo_connect) {
|
if (todo_connect) {
|
||||||
|
if (!valid_peername)
|
||||||
|
error(1, 0, "no peername supplied");
|
||||||
ret = connect(sock, (void *)&peername, sizeof(peername));
|
ret = connect(sock, (void *)&peername, sizeof(peername));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
error(1, errno, "connect()");
|
error(1, errno, "connect()");
|
||||||
|
|
@ -158,8 +163,16 @@ int main(int argc, char *argv[])
|
||||||
dat[j] = ((2*j) << 4) + ((2*j+1) & 0xf);
|
dat[j] = ((2*j) << 4) + ((2*j+1) & 0xf);
|
||||||
|
|
||||||
/* send data */
|
/* send data */
|
||||||
ret = sendto(sock, dat, todo_send, 0,
|
if (valid_peername)
|
||||||
(void *)&peername, sizeof(peername));
|
ret = sendto(sock, dat, todo_send, 0,
|
||||||
|
(void *)&peername, sizeof(peername));
|
||||||
|
else
|
||||||
|
/*
|
||||||
|
* we may do sendto(sock, dat, todo_send, 0, NULL, 0)
|
||||||
|
* as well, but using send() demonstrates the API better
|
||||||
|
*/
|
||||||
|
ret = send(sock, dat, todo_send, 0);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
error(1, errno, "sendto");
|
error(1, errno, "sendto");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue