The simplest TCP server client under Windows

Source: Internet
Author: User
Tags htons

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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.