All pastes #346118 Raw Edit

Something

public text v1 · immutable
·published 2007-02-09 02:17 UTC
rendered paste body
#define PROXY_PORT 8080
#define MAXLENGTH 10000 

using namespace std;

int sock_read(int sockfd, char *buf, const size_t  count);
int sock_write(int sockfd, char *buf, const size_t  count);

int main ( )
{

int sock = socket(PF_INET, SOCK_STREAM, 0);
struct sockaddr_in s_addr;
memset(&s_addr, 0, sizeof(s_addr));
s_addr.sin_port = htons(PROXY_PORT);
s_addr.sin_family = AF_INET;
cout << "Bind: " << bind(sock, (struct sockaddr*)&s_addr, sizeof(s_addr)) << endl;
cout << "Listen: " << listen(sock, 5) << endl;

while (1) { // listening permanently

  struct sockaddr_in peer;
  memset(&peer, 0, sizeof(peer));
  socklen_t slen = sizeof(peer);
  int new_s = accept(sock, (struct sockaddr*)&peer, &slen); //accept connections
  char buf[MAXLENGTH];
  int size = sock_read(new_s,buf,sizeof(buf)); //read message
//--------------------------------------------------------------------------//

// ... more code

}

//read data on socket 
int sock_read(int sockfd, char *buf, const size_t  count) {
   
  size_t bytes_read = 0;
  int    this_read;

  while (bytes_read < count) {
    do {
      this_read = read(sockfd, buf, count-bytes_read);
    } while (this_read < 0   &&   errno == EINTR);

    if (this_read < 0) {
      return this_read;
    } else if (this_read == 0) {
      return bytes_read;
    }

    bytes_read += this_read;
    buf        += this_read;
  }

  return bytes_read;
}