/* $Id: pontifex.c,v 1.1 2004/02/05 07:33:37 jmuelmen Exp $ */ #ifndef NOT_VC #include #include #include #include #else #include #include #endif #include #include #define PONTIFEX_READ_PORT 14159 #define PONTIFEX_WRITE_PORT 14160 #define DATA "Pozdrawiam Pana najbardziej serdecznie." #define BUFLEN 1024 int main(int argc, char **argv) { /* Surf surf[4]; surf_init(&surf[0]); */ int sock, length; struct sockaddr_in sn, rn; char buf[BUFLEN]; int err; #ifndef NOT_VC /* Fucking windows ass-shit. */ WORD wVersionRequested; /* "WSA" means "wipes shitty ass" */ WSADATA wsaData; /* retarded fucking ass wipes */ wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); #endif /* make a socket */ sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) { #ifndef NOT_VC switch (WSAGetLastError()) { case WSANOTINITIALISED: printf("Not initialized\n"); break; case WSAEAFNOSUPPORT: printf("No support\n"); break; default: printf("No fucking clue\n"); } #endif perror("opening datagram socket"); exit(1); } /* Create name to receive from. */ rn.sin_family = AF_INET; rn.sin_addr.s_addr = INADDR_ANY; rn.sin_port = htons(PONTIFEX_READ_PORT); if (bind(sock, (struct sockaddr *)&rn, sizeof(rn))) { #ifndef NOT_VC switch (err = WSAGetLastError()) { case WSANOTINITIALISED: printf("Not initialized\n"); break; case WSAEAFNOSUPPORT: printf("No support\n"); break; default: printf("No fucking clue\n"); } #endif perror("binding datagram socket"); exit(1); } length = sizeof(rn); if (getsockname(sock, (struct sockaddr *)&rn, &length)) { perror("getting socket name"); exit(1); } printf("Socket has port %d... ", ntohs(rn.sin_port)); if (ntohs(rn.sin_port) != PONTIFEX_READ_PORT) { printf("we're unhappy.\n"); return 1; } else printf("we're happy.\n"); /* now make a sockaddr_in to send to */ sn.sin_addr.s_addr = inet_addr("127.0.0.1"); printf("Sending to host 0x%x\n", ntohl(sn.sin_addr.s_addr)); sn.sin_family = AF_INET; sn.sin_port = htons(PONTIFEX_WRITE_PORT); /* wait for the test message from ambush */ if ((length = recv(sock, buf, 1024, 0)) > 0) { buf[length] = 0; printf("Read %d bytes: %s\n", length, buf); } else perror("receiving datagram packet"); /* send test message back */ if ((length = sendto(sock, DATA, sizeof(DATA), 0, &sn, sizeof(sn))) < 0) perror("sending test datagram message"); else printf("Sent %d bytes\n", length); close(sock); }