They are short-connected, the server accepts the client, sends a message immediately after it is sent, disconnects the client immediately, and then continues to wait for the next connection.
Use the header file that Winsocket2 must refer to and the link library file that you want to include:
#include <WinSock2.h>#pragma comment (lib, "Ws2_32.lib")
The following code is the encapsulated code for WINSOCKET2 system initialization and shutdown.
class winsocketsystem{public: winsocketsystem () { int22 ), &wsadata); if (Iresult! = no_error) { exit (-1); } } ~Winsocketsystem () { wsacleanup (); } protected : Wsadata wsadata;}; Static Winsocketsystem G_winsocketsystem;
Server-side code:
classtcpserver{ Public: TCPServer (): Mserversocket (invalid_socket) {//Creating SocketsMserversocket =sockets (Af_inet, Sock_stream, IPPROTO_IP); if(Mserversocket = =invalid_socket) {Std::cout<<"failed to create socket!"<<Std::endl; return; } //populate the server's IP and port numbersmserveraddr.sin_family =af_inet; MServerAddr.sin_addr.s_addr=Inaddr_any; Mserveraddr.sin_port=htons ((u_short) server_port); //binding IP and Ports if(:: Bind (Mserversocket, (sockaddr*) &mserveraddr,sizeof(MSERVERADDR)) ==socket_error) {Std::cout<<"bind IP and port failed!"<<Std::endl; return; } //listens for client requests, with the maximum number of simultaneous connections set to ten. if(:: Listen (Mserversocket, somaxconn) = =socket_error) {Std::cout<<"Listening port failed!"<<Std::endl; return; } std::cout<<"start the TCP server successfully!"<<Std::endl; } ~TCPServer () {:: Closesocket (Mserversocket); Std::cout<<"shut down the TCP server successfully!"<<Std::endl; } voidrun () {intNacceptaddrlen =sizeof(MACCEPTADDR); for (;;) { //wait for the receiving client to connect in a blocking mannerMacceptsocket =:: Accept (Mserversocket, (structsockaddr*) &macceptaddr, &Nacceptaddrlen); Std::cout<<"Accept client IP:"<< Inet_ntoa (MACCEPTADDR.SIN_ADDR) <<Std::endl; //Send Message intRET =:: Send (Macceptsocket, send_string, (int) strlen (send_string),0); if(Ret! =0) {Std::cout<<"Send message successfully!"<<Std::endl; } //close the client socket:: Closesocket (Macceptsocket); Std::cout<<"Disconnect client Side success!"<<Std::endl; } }Private: SOCKET mserversocket; ///< server socket handlesockaddr_in mserveraddr; ///< server addressSOCKET Macceptsocket;///< accepted client socket handlessockaddr_in macceptaddr; ///< The client address received};int_tmain (intARGC, _tchar*argv[]) {TCPServer server; Server.run (); return 0;}
Client code:
classtcpclient{ Public: TCPClient () {//Creating SocketsMserversocket =sockets (Af_inet, Sock_stream, IPPROTO_IP); if(Mserversocket = =invalid_socket) {Std::cout<<"failed to create socket!"<<Std::endl; return; } //populate the server's IP and port numbersmserveraddr.sin_family =af_inet; MServerAddr.sin_addr.s_addr=inet_addr (SERVER_IP); Mserveraddr.sin_port=htons ((u_short) server_port); //Connect to Server if(:: Connect (Mserversocket, (structsockaddr*) &mserveraddr,sizeof(MSERVERADDR))) {:: Closesocket (Mserversocket); Std::cout<<"failed to connect to the server!"<<Std::endl; return; } } ~TCPClient () {:: Closesocket (Mserversocket); } voidrun () {intNrecvsize =0; CharBuff[buffer_size]; memset (Buff,0,sizeof(Buff)); while(Nrecvsize =:: recv (Mserversocket, Buff, buffer_size,0) ) { if(Mserversocket = =invalid_socket) { Break; } std::cout<< Buff <<Std::endl; } std::cout<<"You are disconnected from the server!"<<Std::endl; }Private: SOCKET mserversocket; ///< server socket handlesockaddr_in mserveraddr; ///< server address};int_tmain (intARGC, _tchar*argv[]) {TCPClient client; Client.run (); System ("Pause"); return 0;}
Transferred from: http://www.cppblog.com/tx7do/archive/2010/06/10/117591.html
The simplest TCP server client under Windows