#include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { const char *if_name = "can0"; int sockfd; struct ifreq req = {}; struct sockaddr_can sockaddr = {}; struct can_frame frame = {}; struct timeval tv; char timestr[16]; sockfd = socket(AF_CAN, SOCK_RAW, CAN_RAW); strncpy(req.ifr_name, if_name, IF_NAMESIZE); ioctl(sockfd, SIOCGIFINDEX, &req); sockaddr.can_family = AF_CAN; sockaddr.can_ifindex = req.ifr_ifindex; bind(sockfd, (const struct sockaddr *) &sockaddr, sizeof(sockaddr)); frame.can_dlc = 8; memset(frame.data, 0xee, 8); for (int i = 0; i < 1000; ++i) { frame.can_id = (i & 0x7ff); send(sockfd, &frame, sizeof(frame), 0); } close(sockfd); gettimeofday(&tv, NULL); strftime(timestr, sizeof(timestr), "%H:%M:%S", localtime(&tv.tv_sec)); printf("Socket closed at %s.%06ld\n", timestr, tv.tv_usec); return 0; }