This is the C/S structure in the C ++ Socket network program. UDP "Hello world! ", There are two console projects:
//////////////////////////////////////// /// // <Br/> // udpserver. CPP </P> <p> # include <stdio. h> <br/> # include <winsock2.h> </P> <p> # pragma comment (Lib, "ws2_32.lib ") <br/> # define buf_size64 </P> <p> int main (void) <br/>{< br/> wsadatawsd; <br/> sockets; <br/> intnret; </P> <p> // initialize the socket dynamic library <br/> If (wsastartup (makeword (), & WSD )! = 0) <br/>{< br/> printf ("wsastartup failed! /N "); <br/> return 1; <br/>}</P> <p> // create a socket <br/> S = socket (af_inet, sock_dgram, 0); <br/> If (S = invalid_socket) <br/> {<br/> printf ("socket () failed, error code: % d/N ", wsagetlasterror (); <br/> wsacleanup (); <br/> return 1; <br/>}</P> <p> socketsocketsrv = socket (af_inet, sock_dgram, 0); <br/> sockaddr_in addrsrv; <br/> sockaddr_in addrclient; <br/> charbuf [buf_size]; <br/> intlen = sizeof (sockaddr ); </P> <p> // set Server address <br/> zeromemory (BUF, buf_size); <br/> addrsrv. sin_addr.s_un.s_addr = htonl (inaddr_any); <br/> addrsrv. sin_family = af_inet; <br/> addrsrv. sin_port = htons (5000); </P> <p> // bind a socket <br/> nret = BIND (socketsrv, (sockaddr *) & addrsrv, sizeof (sockaddr); <br/> If (socket_error = nret) <br/>{< br/> printf ("bind failed! /N "); <br/> closesocket (s); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // receives data from the client <br/> nret = recvfrom (socketsrv, Buf, buf_size, 0, (sockaddr *) & addrclient, & Len); <br/> If (socket_error = nret) <br/>{< br/> printf ("recvfrom failed! /N "); <br/> closesocket (s); <br/> wsacleanup (); <br/> return-1; <br/>}< br/> // print the data sent from the client <br/> printf ("Recv from client: % s/n", Buf ); </P> <p> // send data to the client <br/> sendto (socketsrv, "UDP Hello world! ", Sizeof (" UDP Hello world! "), 0, (sockaddr *) & addrclient, Len); <br/> closesocket (s); <br/> wsacleanup (); <br/> return 0; <br/>}
//////////////////////////////////////// /// // <Br/> // udpclient. CPP </P> <p> # include <stdio. h> <br/> # include <winsock2.h> </P> <p> # pragma comment (Lib, "ws2_32.lib ") <br/> # define buf_size64 </P> <p> int main (void) <br/>{< br/> wsadatawsd; <br/> sockets; </P> <p> // initialize the socket dynamic library <br/> If (wsastartup (makeword (), & WSD )! = 0) <br/>{< br/> printf ("wsastartup failed! /N "); <br/> return 1; <br/>}</P> <p> // create a socket <br/> S = socket (af_inet, sock_dgram, 0); <br/> If (S = invalid_socket) <br/> {<br/> printf ("socket () failed, error code: % d/N ", wsagetlasterror (); <br/> wsacleanup (); <br/> return 1; <br/>}</P> <p> charbuf [buf_size]; // accept data <br/> sockaddr_inservaddr; // server socket address <br/> socketsockclient = socket (af_inet, sock_dgram, 0); <br/> intnret; </P> <p> zeromemory (BUF, buf_size); <br/> S Trcpy (BUF, "UDP Hello world! "); </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 (5000); </P> <p> // send data to the server <br/> int nservaddlen = sizeof (servaddr ); <br/> If (sendto (sockclient, Buf, buf_size, 0, (sockaddr *) & servaddr, nservaddlen) = socket_error) <br/>{< br/> printf ("recvfrom () failed: % d/N", wsagetlasterror (); <br/> closesocket (s); <br/> Wsacleanup (); <br/> return 1; <br/>}< br/> nret = recvfrom (sockclient, Buf, buf_size, 0, (sockaddr *) & servaddr, & nservaddlen); <br/> If (socket_error = nret) <br/> {<br/> printf ("recvfrom failed! /N "); <br/> closesocket (s); <br/> wsacleanup (); <br/> return-1; <br/>}</P> <p> // print the data sent from the server. <br/> printf ("Recv from server: % s/n ", buf); <br/> closesocket (s); <br/> wsacleanup (); <br/> return 0; <br/>}
Program running effect:
Source code:
Http://www.rayfile.com/files/733c832e-a2d8-11de-a838-0014221b798a/