setsockopt(my_socket, IPPROTO_TCP, TCP_MAXRT, (char*)&timeout, sizeof(timeout));
struct timeval timeout; timeout.tv_sec = 1; timeout.tv_usec = 0; setsockopt(my_socket, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof timeout); setsockopt(my_socket, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof timeout);
#include <proto/exec.h> #include <sys/socket.h> #include <proto/socket.h> #include <netinet/in.h> #include <netinet/tcp.h> #include <stdio.h> struct Library* SocketBase = NULL; int main(void) { // Try open socket library. SocketBase = (struct Library*)OpenLibrary("bsdsocket.library", 4); if (SocketBase == NULL) return 1; // try open a socket LONG my_socket = socket(AF_INET, SOCK_STREAM, 0); if (my_socket == -1 ) { printf("error on socket creating\n"); } else { printf("socket created\n"); } int timeout = 1; setsockopt(my_socket, IPPROTO_TCP, 5 , (char*)&timeout, sizeof(timeout)); struct sockaddr_in addr; memset ( &addr , 0 , sizeof(struct sockaddr_in) ); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr("216.58.213.0"); addr.sin_port = htons(80); if (connect(my_socket, (struct sockaddr*)&addr, sizeof(addr)) != 0) printf("Failed"); else printf("Success"); CloseSocket(my_socket); CloseLibrary(SocketBase); return 0; }
@mateusz_s, post #1
@mateusz_s, post #1
int timeout = 1; setsockopt(my_socket, IPPROTO_TCP, 5 , (char*)&timeout, sizeof(timeout));
struct timeval timeout; timeout.tv_sec = 1; timeout.tv_usec = 0; setsockopt(my_socket, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof (timeout)); setsockopt(my_socket, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof (timeout));
@mateusz_s, post #5
@Hexmage960, post #2
// Try open socket library. SocketBase = (struct Library*)OpenLibrary("bsdsocket.library", 4); if (SocketBase == NULL) return 1; // try open a socket LONG my_socket = socket(AF_INET, SOCK_STREAM, 0); if (my_socket == -1 ) { printf("error on socket creating\n"); } else { printf("socket created\n"); } printf("socket: %d", my_socket); // set socket to non-blocking mode LONG mode = 1; LONG result = IoctlSocket(my_socket, FIONBIO, &mode); if (result == -1) printf("\nioctlsocket failed with error %d\n", result); struct sockaddr_in addr; memset ( &addr , 0 , sizeof(struct sockaddr_in) ); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr("216.58.213.0"); addr.sin_port = htons(80); if (connect(my_socket, (struct sockaddr*)&addr, sizeof(addr)) != 0) printf("\nFailed\n"); else printf("\nSuccess\n"); fd_set reading, writing, except; int rc, max_sock; struct timeval timeout; timeout.tv_sec = 5; timeout.tv_usec = 0; /* initialize the bit sets */ FD_ZERO( &reading ); FD_ZERO( &writing ); FD_ZERO( &except ); /* add r, w, and e to the appropriate bit set */ FD_SET( my_socket, &reading ); FD_SET( my_socket, &writing ); FD_SET( my_socket, &except ); /* for efficiency, what's the maximum socket number? */ max_sock = 3; /* make select poll by sending a 0 timeval */ memset( &timeout, 0, sizeof(timeout) ); /* poll */ rc = WaitSelect( max_sock, &reading, &writing, &except, &timeout, NULL ); if ( rc < 0 ) { /* an error occurred during the select() */ printf("ERROR"); } else if ( rc == 0 ) { /* none of the sockets were ready in our little poll */ printf( "nobody is home.\n" ); } else { /* at least one of the sockets is ready */ printf("r is %s\n", FD_ISSET(my_socket,&reading) ? "READY" : "NOT READY"); printf("w is %s\n", FD_ISSET(my_socket,&writing) ? "READY" : "NOT READY"); printf("e is %s\n", FD_ISSET(my_socket,&except) ? "READY" : "NOT READY"); } CloseSocket(my_socket); CloseLibrary(SocketBase);
@mateusz_s, post #9
@Hexmage960, post #10
@mateusz_s, post #11