Esempio n. 1
0
int main()
{
  int sckt, portnum, newsckt, clisize, status;
  struct sockaddr_in servadd, cliadd;

  //open socket 
  sckt = socket(AF_INET, SOCK_STREAM, 0);
  
  if(sckt < 0)
    {
      printf("ERROR: Could not open socket\n");
    }
  
  //bind the port
  portnum = 4502;
  servadd.sin_family = AF_INET;
  servadd.sin_addr.s_addr = INADDR_ANY;
  servadd.sin_port = htons(portnum);
  if(bind(sckt, (struct sockaddr *) &servadd, sizeof(servadd)) < 0)
    printf("ERROR: Could not bind!\n");


  while(1)
    { 
      //listen   
      listen(sckt, 5);
      
      //accept connection on socket 
      clisize = sizeof(cliadd);
      printf("Waiting for client connection...\n");
      newsckt = accept(sckt, (struct sockaddr *) &cliadd, &clisize);
      if(newsckt < 0)
	printf("ERROR: Could not accept!\n");
      
      //read message from client
      status = recv(newsckt, buffer, MAX_BUFFER_SIZE, 0);
      if(status < 0)
	printf("ERROR: Could not read from socket\n");
      printf("Client send message: %s\n", buffer);
      
      char *message;
      message = interprut_request(buffer);
      //message = "Message recieved";
      printf("Sending response: %s\n", message);
      status = send(newsckt, message, strlen(message), 0);
      if(str_starts_with(message, "quit"))
	{
	  exit(0);
	}
      if(status < 0)
	printf("ERROR: Could not write to socket\n");
      
      set_buffer_empty();
    }

  return(0);

}
Esempio n. 2
0
static void brelse_free(struct btree *btree, struct buffer_head *buffer)
{
	struct sb *sb = btree->sb;
	block_t block = bufindex(buffer);
	if (bufcount(buffer) != 1) {
		warn("free block %Lx still in use!", (L)bufindex(buffer));
		brelse(buffer);
		assert(bufcount(buffer) == 0);
		return;
	}
	brelse(buffer);
	(btree->ops->bfree)(sb, block, 1);
	set_buffer_empty(buffer); // free it!!! (and need a buffer free state)
}