This is the C/S structure in the C ++ Socket network program. TCP "Hello world! ", There are two console projects:
//////////////////////////////////////// /// // <Br/> // tcpserver. CPP </P> <p> # include <stdio. h> <br/> # include <winsock2.h> </P> <p> # pragma comment (Lib, "ws2_32.lib ") <br/> # definebuf_size64 // buffer size </P> <p> int main (void) <br/>{< br/> wsadata WSD; // wsadata variable <br/> socketsserver; // server socket <br/> socket sclient; // client socket <br/> intretval; // return value <br/> charbuf [buf_size]; // accept data </P> <p> // initial Dynamic socket library <br/> zeromemory (BUF, buf_size); <br/> If (wsastartup (makeword (2, 2), & WSD )! = 0) <br/>{< br/> printf ("wsastartup failed! /N "); <br/> return 1; <br/>}</P> <p> // create a socket <br/> sserver = socket (af_inet, sock_stream, ipproto_tcp); <br/> If (invalid_socket = sserver) <br/>{< br/> printf ("socket failed! /N "); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // server socket address <br/> sockaddr_inaddrserv; <br/> addrserv. sin_family = af_inet; <br/> addrserv. sin_port = htons (4999); <br/> addrserv. sin_addr.s_un.s_addr = htonl (inaddr_any); </P> <p> // bind a socket <br/> retval = BIND (sserver, (const struct sockaddr *) & addrserv, sizeof (sockaddr_in); <br/> If (socket_error = retval) <br/>{< br/> printf ("bind failed! /N "); <br/> closesocket (sserver); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // listener socket <br/> retval = listen (sserver, 1); <br/> If (socket_error = retval) <br/> {<br/> printf ("Listen failed! /N "); <br/> closesocket (sserver); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // accept customer requests <br/> sockaddr_in addrclient; <br/> int addrclientlen = sizeof (addrclient ); <br/> sclient = accept (sserver, (sockaddr far *) & addrclient, & addrclientlen); <br/> If (invalid_socket = sclient) <br/>{< br/> printf ("Accept failed! /N "); <br/> closesocket (sserver); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // accept customer data <br/> retval = Recv (sclient, Buf, bufsiz, 0 ); <br/> If (socket_error = retval) <br/> {<br/> printf ("Recv failed! /N "); <br/> closesocket (sserver); <br/> closesocket (sclient); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // exit the Program <br/> printf ("Recv from client: % s/n", Buf ); <br/> retval = Send (sclient, "Hello world! ", Strlen (" Hello world! "), 0); <br/> If (socket_error = retval) <br/>{< br/> printf (" Send failed! /N "); <br/> closesocket (sserver); <br/> closesocket (sclient); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // exit the Program <br/> closesocket (sserver); <br/> closesocket (sclient ); <br/> wsacleanup (); <br/> return 0; <br/>}
//////////////////////////////////////// /// // <Br/> // tcpclient. CPP </P> <p> # include <stdio. h> <br/> # include <winsock2.h> </P> <p> # pragma comment (Lib, "ws2_32.lib ") <br/> # definebuf_size64 // buffer size </P> <p> int main (void) <br/>{< br/> wsadatawsd; // initialize the database <br/> socketshost; // server socket <br/> sockaddr_in servaddr; // server address <br/> charbuf [buf_size]; // accept the data buffer <br/> intretval; // return value </P> <p> If (Wsastartup (makeword (2, 2), & WSD )! = 0) <br/>{< br/> printf ("wsastartup failed! /N "); <br/> return 1; <br/>}</P> <p> // create a socket <br/> shost = socket (af_inet, sock_stream, ipproto_tcp); <br/> If (invalid_socket = shost) <br/>{< br/> printf ("socket failed! /N "); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // set the server address <br/> servaddr. sin_family = af_inet; <br/> servaddr. sin_addr.s_un.s_addr = inet_addr ("192.168.1.254"); <br/> servaddr. sin_port = htons (4999); <br/> int sserveraddlen = sizeof (servaddr); </P> <p> // connect to the server <br/> retval = connect (shost, (lpsockaddr) & servaddr, sizeof (servaddr); <br/> If (socket_error = retval) <br/>{< br/> printf ("Connect failed! /N "); <br/> closesocket (shost); <br/> wsacleanup (); <br/>}</P> <p> // send data to the server <br/> zeromemory (BUF, buf_size); <br/> strcpy (BUF, "Hello world! "); <Br/> retval = Send (shost, Buf, strlen (BUF), 0); <br/> If (socket_error = retval) <br/>{< br/> printf ("Send failed! /N "); <br/> closesocket (shost); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // receive data from the server <br/> retval = Recv (shost, Buf, sizeof (BUF) + ); <br/> printf ("Recv from server: % s/n", Buf); </P> <p> // exit the Program <br/> closesocket (shost ); <br/> wsacleanup (); <br/> return 0; <br/>}
Program running effect:
Source code:
Http://download.csdn.net/source/1667113
Http://www.rayfile.com/files/79dbe03a-a1fe-11de-83dd-0014221b798a/