Please start new topics in new threads and do not reply to old ones.
Franz Engel wrote:
> Hello,
>
> With the following code I can start an socket an I get no errors until the
> initialization.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <sys/types.h>
> #include <sys/mman.h>
> #include <sys/stat.h>
> #include <fcntl.h>
> #include <errno.h>
>
> #include <sched.h>
> #include <netdb.h>
> #include <arpa/inet.h>
> #include <netinet/in.h>
> #include <rtnet.h>
>
> #include <rtai_serial.h>
> #include <rtai_lxrt.h>
>
>
> static struct sockaddr_in local_addr;
> static struct sockaddr_in server_addr;
>
> int main(int argc, char **argv)
> {
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtcfg.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtmac.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/tdma.ko");
> system("/sbin/insmod /usr/realtime/modules/rtai_hal.ko");
> system("/sbin/insmod /usr/realtime/modules/rtai_lxrt.ko");
> system("/sbin/insmod /usr/realtime/modules/rtai_sem.ko");
> system("/sbin/insmod /usr/realtime/modules/rtai_rtdm.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtnet.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtipv4.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtudp.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rtpacket.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rt_loopback.ko");
> system("/sbin/insmod /lib/modules/2.6.31.8-rtai-1v/rt_8139too.ko");
>
> int sockfd = 0;
> int ret = 0;
> int res;
> RTIME period;
> RT_TASK *lxrtnettsk;
>
> char msg[] = "This message was sent using rtnet_lxrt.";
> printf("RTnet, simpleclient for LXRT\n");
>
> memset(&local_addr, 0, sizeof(struct sockaddr_in));
> memset(&server_addr, 0, sizeof(struct sockaddr_in));
>
> local_addr.sin_family = AF_INET;
> local_addr.sin_addr.s_addr = inet_addr("192.168.180.1");
> local_addr.sin_port = htons(atoi("8080"));
>
> server_addr.sin_family = AF_INET;
> server_addr.sin_addr.s_addr = inet_addr("192.168.180.2");
> server_addr.sin_port = htons(atoi("8080"));
>
>
> /* Lock allocated memory into RAM. */
> mlockall(MCL_CURRENT|MCL_FUTURE);
>
> for(int i=1;i<sockfd;i++)
> {
> rt_dev_close(i);
> }
>
> sockfd = rt_dev_socket(AF_INET, SOCK_DGRAM, 0);
> //system("")
> rt_dev_send(sockfd, msg, sizeof(msg), 0);
> if (sockfd < 0)
> {
> printf("Error opening socket: %d\n", sockfd);
> exit(1);
> }
> else
> {
> printf("Öffnet socket: %d\n", sockfd);
> }
>
> /* Initialize a real time buddy. */
> lxrtnettsk = rt_task_init(4800, 1, 0, 0);
> if (NULL == lxrtnettsk) {
> rt_dev_close(sockfd);
> printf("CANNOT INIT MASTER TASK\n");
> exit(1);
> }
>
> /* Switch over to hard realtime mode. */
> rt_make_hard_real_time();
>
> /* Bind socket to local address specified as parameter. */
> ret = rt_dev_bind(sockfd, (struct sockaddr *) &local_addr, sizeof(struct
> sockaddr_in));
>
> /* Specify destination address for socket; needed for rt_socket_send(). */
> int k = rt_dev_connect(sockfd, (struct sockaddr *) &server_addr,
> sizeof(struct sockaddr_in));
> printf("K: %i",k);
>
> /* Send a message. */
> rt_dev_send(sockfd, msg, sizeof(msg), 0);
>
> /* Switch over to soft realtime mode. */
> rt_make_soft_real_time();
>
> /* Close socket.
> * Note: call must be in soft-mode because socket was created as non-rt!
> */
> rt_dev_close(sockfd);
>
> /* Delete realtime buddy. */
> rt_task_delete(lxrtnettsk);
>
> return 0;
> }
>
>
> But when the programm try to send I get the following dmesg-output:
> [ 2328.237746] RTcfg: init real-time configuration distribution protocol
> [ 2328.247369] RTmac: init realtime media access control
> [ 2328.263020] RTmac/TDMA: init time division multiple access control
> mechanism
> [ 2328.289233] RTnet: host 192.168.180.2 unreachable
>
> And I receive nothing on my second computer. Also Wireshark doesn't trace
> something. Furthermore, withe the command "./rtroute" I saw that threre stand
> nothing in the routing table, beside "Hash Destination HW Address
> Device". So I get "ioctl: No route to host" back if I try to rtping the
> second computer.
>
> One more idea?Now you lack the "rtroute add" that your previous code contains - or some "rtroute solicit", or a full RTcfg setup. Jan
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------
_______________________________________________ RTnet-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rtnet-users

