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