Avatar billede mora Nybegynder
17. februar 2002 - 12:25 Der er 1 kommentar og
1 løsning

Client/Server

Nogen der har et lille client server eksempel ?

Hvis det bruger eksterne componenter bedes link medsent :)

egentlig mest client jeg har brug for ...

- Skal bruges til at connecte til en TCP server og læse data derfra regelmæssigt (og naturligvis sende data tilbage).


~MORA~
Avatar billede - Nybegynder
17. februar 2002 - 16:13 #1
Denne kode sender en Get kommando til en webserver (google.com) og får en hjemmeside tilbage.

#include <iostream.h>
#include <winsock.h>

void main()
{
char        tpkt[21] = "GET / HTTP/1.0 \n\n";  /* message to send to host */
char        servername[80]="216.239.37.101";    /* pointer to name of server */
struct      hostent *h;                        /* getnamebyhost info returned */
struct      sockaddr_in sa;                    /* socket address */
int        fd;                                /* socket descriptor */
short      portnum=80;                        /* port number of server */
int        funcstatus;                        /* returned status from socket functions */
int        inlen;                              /* length of input message */
char        inbuf[200000];                      /* input message buffer */
WSADATA    wsaData;                            /* Winsock parameters */

WSAStartup( 0x0101, &wsaData);

/* get host address */
h = gethostbyname(servername);
if (h == NULL) {
      cout << "gethostbyname error";
      exit(0);
      }


/*  build socket structure  */
memcpy((char *)&sa.sin_addr,(char *)h->h_addr, h->h_length);
sa.sin_family = h->h_addrtype;
sa.sin_port = htons(portnum);

/*  allocate an open socket */
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1) {
      cout << "socket creation error";
      cin.ignore();
      exit(0);
      }
else
      cout << "socket created\n";



/*  connect to the server */
if (connect(fd, (struct sockaddr *)&sa, sizeof sa) < 0) {
      cout << "connect error";
        cin.ignore();
      exit(0);
      }
cout << "connected\n";

/* send a packet to the server */
funcstatus = send(fd, tpkt, strlen(tpkt)+1, 0 );
if (funcstatus == -1) {
      cout << "Error sending data to server\n";
      cin.ignore();
      exit(0);
      }
cout << "packet sent to server\n";

/* wait for a reply */
inlen = recv(fd, inbuf, 200000, 0);
if (inlen < 0)
      cout << "Error receiving data from the server\n";
else
      cout << inlen << " byte reply from server" << inbuf;

WSACleanup();
cin.ignore();
}
Avatar billede mora Nybegynder
17. februar 2002 - 17:23 #2
nice =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester