0

Hello all. Essentially what I need to do is what is described in the topic, in the context of using winsock's recv() function.

I've made some code that does what recv() does to strings so that I could find a solution without dealing with the rest of the socket code. Like recv(), recb() takes as its arguments a buffer array to store a string of chars and the length of that array.

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
  
  char mystring[500]; // buffer with pseudo-unlimited capacity.
  char *realbuf; // actual buffer, trimmed of un-needed space
  
  int i;
  
  recb(mystring, 500);
  

  // trim & store 
  for (i=0; mystring[i] != '\0'; ++i){
        realbuf[i]=mystring[i];
  }
  realbuf[i]='\0'; // add null to avoid garbage characters
  
  printf("String: %s, Length: %d", realbuf, i); // print 
  	
  return 0;
}

int recb (char *buffer, int bufn) {
  int i;
  char *towrite="What's up earth."; // in recv() this'd be data received from client/server
  
  for (i=0; i <= bufn; i++) {
    buffer[i]=towrite[i];
  }
  
  return i-1; // recv() returns how many bytes it stored

}

Okay, so this might work fine. But it's kind of long and redundant. Is there a sane way of doing it?

2
Contributors
1
Reply
3
Views
11 Years
Discussion Span
Last Post by Dave Sinkula
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.