Example #1
0
int
main(int argc, char *argv[])
{
    int sd = UDP_Open(0);
    assert(sd > -1);

    struct sockaddr_in saddr;
    int rc = UDP_FillSockAddr(&saddr, "localhost", 10000);
    assert(rc == 0);
    //message msg = {.func="shutdown", .int1 = 0,.int2=0,.ret=-1,.name="root"};
    message msg = {.func="lookup", .int1 = 0,.int2=0,.ret=1,.name=".."}; 
    printf("CLIENT:: about to send message (%d)\n", rc);
    rc = UDP_Write(sd, &saddr, (char *) &msg, sizeof(message));
    printf("CLIENT:: sent message (%d)\n", rc);
    fd_set r;
    FD_ZERO(&r);
    FD_SET(sd, &r);
    struct timeval t;
    t.tv_sec = 4;
    t.tv_usec = 0;
    rc =  select(sd + 1, &r, NULL, NULL, &t);
    if (rc > 0) {
	struct sockaddr_in raddr;
        msg.ret = -19;
	int rc = UDP_Read(sd, &raddr,(char *) &msg, sizeof(message));
	printf("CLIENT:: read %d bytes (message: '%d')\n", rc, msg.ret);
    }
  else {
	printf("client timed out\n");
	//rc = UDP_Write(sd, &saddr, (char *) &msg, sizeof(message));
	//rc = select(sd + 1, &r, NULL, NULL, &t);
    }
    return 0;
}
Example #2
0
//Using first char byte as acknowledge
//transmits data and waits for acknowledge
//CANNOT USE FULL BUFFER
//DATA WILL BE STORED AT THE LAST 3 BYTES OF THE BUFFER
int transmit(char message[BUFFER_SIZE]) {
    if (DEBUG) printf("USING THIS OLD TRANSMIT!!!! WAHH\r\n");
    time_t tstart,tnow;
    int ackd = 0;
    //message[BUFFER_SIZE-3] = messageid;
    //message[BUFFER_SIZE-2] = 'k';
    //message[BUFFER_SIZE-1] = 'z'; //watch for this key TODO remove
    while (!ackd) {
        tstart = time(NULL);
        rc = UDP_FillSockAddr(&saddr, "best-mumble.cs.wisc.edu", 10021);
        assert(rc == 0);
        sendpacket(message);
        int timeout = 0;
        while (!timeout) {
            int rxd = receive();
            tnow = time(NULL);
            if ((rxd == 0)&&(messageid == (int)buffer[0])&&(buffer[1] == 'a')&&(buffer[2] == 'c')&&(buffer[3] == 'k')) { //got valid ack
                if (DEBUG) printf("SUCCESS received correct acknowledge!\r\n");
                ackd = 1;
                timeout = 1;
            }
            int diff = difftime(tnow, tstart);
            if (diff > TIMEOUT) {
                timeout = 1;
                if (DEBUG) printf("Timed out! Resending...\r\n");
            }
        }
    }
    messageid++; //increment AFTER getting valid ack
    return 0;
}
Example #3
0
//sets up socket
void setupconnection() {
    sd = UDP_Open(0);
    assert(sd > -1);
    rc = UDP_FillSockAddr(&saddr, "best-mumble.cs.wisc.edu", 10021);
    assert(rc == 0);
    messageid = 0; 
    fcntl(sd, F_SETFL, O_NONBLOCK); //set to non-blocking
}
Example #4
0
int MFS_Init(char *hostname, int port){
  sd = UDP_Open(0);
  assert(sd > -1);

  int rc = UDP_FillSockAddr(&saddr, hostname, port);
  assert(rc == 0);
  printf("CLIENT:: about to send message (%d)\n", rc);
  return 0;
}
Example #5
0
File: mfs.c Project: tmfahey/cs537
int MFS_Init(char * hostname, int port) {

   sd = UDP_Open(0);
    assert(sd > -1);
   rc = UDP_FillSockAddr(&saddr, hostname, port);
   if (rc != 0) {
	fprintf(stderr,"Error: cannot fill socket address, invalid hostname or port number \n");
	exit(0);
   }
   return 0;
}
Example #6
0
//Library routines
int MFS_Init(char* hostname, int port)
{
	int sd = UDP_Open(0);
	assert(sd > -1);

	struct sockaddr_in saddr;
	int rc = UDP_FillSockAddr(&saddr, hostname, port);
	assert(rc == 0);

	//Fill in the common com struct
	com_t.sd = sd;
	com_t.addr = saddr;		
	
#ifdef DEBUG
	printf("\n----Calling MFS_Init to server %s at port %d\n", hostname, port);
#endif

	printf("				CLIENT:: about to send the message (%d)\n", rc);

	return 0;
}
Example #7
0
int sendPacket(char *hostname, int port, Net_Packet *sentPacket, Net_Packet *responsePacket, int maxTries)
{
    int sd = UDP_Open(0);
    if(sd < -1)
    {
        perror("Error opening connection.\n");
        return -1;
    }

    struct sockaddr_in addr, addr2;
    int rc = UDP_FillSockAddr(&addr, hostname, port);
    if(rc < 0)
    {
        perror("Error looking up host.\n");
        return -1;
    }

    fd_set rfds;
    struct timeval tv;
    tv.tv_sec=3;
    tv.tv_usec=0;


    do {
        FD_ZERO(&rfds);
        FD_SET(sd,&rfds);
        UDP_Write(sd, &addr, (char*)sentPacket, sizeof(Net_Packet));
        if(select(sd+1, &rfds, NULL, NULL, &tv))
        {
            rc = UDP_Read(sd, &addr2, (char*)responsePacket, sizeof(Net_Packet));
            if(rc > 0)
            {
                UDP_Close(sd);
                return 0;
            }
        }else {
            maxTries -= 1;
        }
    }while(1);
}
Example #8
0
int MFS_Init(char *hostname, int port) {
INIT:
//	printf("MFS_Init CKP\n");
    port_num=port;
    sd = UDP_Open(0);
    assert(sd > -1);
    int rc = UDP_FillSockAddr(&saddr,hostname,port_num);
    saddr=saddr;
    assert(rc == 0);
    struct sockaddr_in raddr;

//	MFS_Transmit_t message;
    sprintf(message.name,"Init");
    message.transmit=0;
//INIT:

    rc = transmit();

    fd_set r;
    FD_ZERO(&r);
    FD_SET(sd,&r);


    struct timeval t;
    t.tv_sec=5;
    t.tv_usec=0;
    int rc2 = select(sd+1,&r,NULL,NULL,&t);
    printf("Running %s on %d and select returned =%d\n",hostname,port_num,rc);

    if(rc2>0) {
        rc = UDP_Read(sd, &raddr, (char*)&reply_rec, sizeof(return_struct_t));
        //	printf("TIMEOUT\n");
        //	exit(1);
    }
    else {
//		printf("TIMEOUT\n");
        goto INIT;
    }
    return(0);
}
Example #9
0
int MFS_Init(char *hostname, int port)
{
    if (DEBUG) printf("MFS_Init called with hostname %s and port %d.\n", hostname, port);

    //INIT VARIABLES
    //messageid = 0; //start the messageid count

    //PRIMATIVE CHECKS
    if (port < 0 || hostname == NULL){
        if (DEBUG) printf("ERROR: MFS_Init received invalid parameters.\n");
        return -1;
    }

    //SET UP SOCKET
    sd = UDP_Open(0);
    if (sd < 0){
        if (DEBUG) printf("UDP_Open in MFS_Init failed.\n");
        return -1;
    }
    rc = UDP_FillSockAddr(&saddr, hostname, port);
    if (rc < 0){
        if (DEBUG) printf("UDP_FillSockAddr in MFS_Init failed.\n");
        return -1;
    }
    fcntl(sd, F_SETFL, O_NONBLOCK); //set to non-blocking

    //SET UP PACKET
    //sprintf(message, "This is a test. #YOLO THIS IS DIFFERENT");
    message[KEY_BYTE] = 'k';
    message[COMMAND_BYTE] = 0;
    message[MESSAGE_ID] = messageid;

    //SEND PACKET
    transmit();
    
    return 0;
}
Example #10
0
int
main(int argc, char *argv[])
{
    int sd = UDP_Open(0);
    assert(sd > -1);

    struct sockaddr_in saddr;
    int rc = UDP_FillSockAddr(&saddr, "procyon.cs.wisc.edu", 1345);
    assert(rc == 0);

    printf("CLIENT:: about to send message (%d)\n", rc);
    
		char message[BUFFER_SIZE];
    sprintf(message, "hello world");
    rc = UDP_Write(sd, &saddr, message, BUFFER_SIZE);
    // printf("CLIENT:: sent message (%d)\n", rc);
    if (rc > 0) {
	struct sockaddr_in raddr;
	int rc = UDP_Read(sd, &raddr, buffer, BUFFER_SIZE);
	printf("CLIENT:: read %d bytes (message: '%s')\n", rc, buffer);
    }

    return 0;
}
Example #11
0
File: mfs.c Project: mullens/p5a
int MFS_Init(char *hostname, int port)
{
	fd = socket(AF_INET, SOCK_DGRAM, 0);
	UDP_FillSockAddr(&addr, hostname, port);
	return 0;
}