#include #include #ifdef mips #include #else #include #endif #include #include #include #include #include #include #include #include #include #include "defs.h" #include "struct.h" #include "data.h" #include "packets.h" #include "robot.h" master() {} /* slave robot */ connect_master(m) char *m; { int v, ms = -1; int port; char host[80]; struct sockaddr_in addr; struct hostent *hp; v = sscanf(m, "%*s %s %d", host, &port); if(v != 2) { fprintf(stderr, "connect_master: bad string %s\n", m); return 0; } if(_master_sock != -1){ shutdown(_master_sock, 2); _master_sock = -1; } if((ms = socket(AF_INET, SOCK_STREAM, 0)) < 0){ perror("socket"); return 0; } addr.sin_family = AF_INET; addr.sin_port = port; if((addr.sin_addr.s_addr = inet_addr(host)) == -1){ if((hp = gethostbyname(host))==NULL){ perror("unknown host"); close(ms); return 0; } else{ addr.sin_addr.s_addr = *(long *) hp->h_addr; } } if(connect(ms, (struct sockaddr *) &addr, sizeof(addr)) < 0){ perror("connect"); close(ms); return 0; } _master_sock = ms; return 1; } /* slave sends master packets */ send_to_master(p, s) struct player_spacket *p; int s; { int c; if(_master_sock == -1) return; c = write(_master_sock, (char *)p, s); if(c < 0){ perror("write"); } } recv_from_master(p) struct mastercomm_spacket *p; { }