Hello all.
Firstly, I wasn't sure if this should go in the Networking forum or in the C++ forum, so I posted it here as I figured the C++ people are more likely to look here than the networking one. We'll seoon see
I've been toying with C for a while, just brought C++ for Dummies figuring I'd consider moving over. Anyway, looking at some socket stuff (not covered by the book, annoyingly) and have followed Beej's network tutorial. However, I'm wondering how I can recieve more that one line of input from a server. I'm assuming I need a while() look in here somewhere, chekcing for multiple lines. Not entirely sure where, and seeing as the tutorial didn't cover it I figured I'd ask
main.cpp
Config.cppCode:#include <iostream> #include <stdlib.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include "Config.cpp" using namespace std; int main(int argc, char *argv[]) { /* Setup the configration options. */ Configuration.Server = "irc.blitzed.org"; Configuration.Channel = "#testing12345"; Configuration.RealName = "Test, from DaveHope"; Configuration.Port = 6667; Configuration.DataSize = 100; Configuration.Debug = 1; int sockfd, numbytes; char buf[Configuration.DataSize]; struct hostent *he; struct sockaddr_in their_addr; // connector's address information if ((he=gethostbyname(Configuration.Server)) == NULL) { perror("gethostbyname"); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } their_addr.sin_family = AF_INET; // host byte order their_addr.sin_port = htons(Configuration.Port); // short, network byte order their_addr.sin_addr = *((struct in_addr *)he->h_addr); memset(&(their_addr.sin_zero), '\0', 8); // zero the rest of the struct if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) { perror("connect"); exit(1); } if ((numbytes=recv(sockfd, buf, Configuration.DataSize-1, 0)) == -1) { perror("recv"); exit(1); } buf[numbytes] = '\0'; printf("%s\n",buf); /* Close the connection. */ close(sockfd); /* Exit. */ return 0; }
As always, you guys are stars. Thanks for putting up with my so far!Code:/* * Configuration Array. * The below struct will hold all configuration information. */ struct Configuration { /* General Configuration. */ int Port; char *Server; char *Channel; char *Nickname; char *RealName; int DataSize; /* Debug Mode ? */ int Debug; /* Socket/Connection Configuration. */ int state; }; struct Configuration Configuration;![]()



LinkBack URL
About LinkBacks



