3.2 Client – 链接到服务器
CS 连接的第二部是客户端的责任的,要尝试去连接server。代码跟刚才服务器的那个有些类似:
列表 2 : 创建一个client socket (simple_client_main.cpp 部分代码)
#include "ClientSocket.h"
#include "SocketException.h"
#include <iostream>
#include <string>

int main ( int argc, int argv[] )
{
try
    {
      //
创建一个 client socket
      ClientSocket client_socket ( "localhost", 30000 );


      //
其余的代码是发送请求,解析相应等等。
    }
catch ( SocketException& e )
    {
      std::cout << "Exception was caught:" << e.description() << "\n";
    }

return 0;
}

通过创建一个 ClientSocket 类的实例, 你创建了一个linux的socket,并把它链接到主机的port上。类似于 ServerSocket 类,如果构造函数因为某些原因出现异常,那么就要抛出异常。
3.3 Server – 接受客户端连接
下一步的CS连接活动再server端。Server有责任接受来自client的连接请求,并且再两个socket之间打开通信的通道。
我们把这个功能添加到这个简单的server中,就是如下升级的版本:
列表 3 : 接受客户端连接 ( 部分 simple_server_main.cpp )
#include "ServerSocket.h"
#include "SocketException.h"
#include <string>

int main ( int argc, int argv[] )
{
try
    {
      //
创建socket
      ServerSocket server ( 30000 );

      while ( true )
       {
       ServerSocket new_sock;
       server.accept ( new_sock );


        // 其余代码,读取请求,发送回复等等。
        }
    }
catch ( SocketException& e )
    {
      std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
    }

return 0;
}
接受一个连接请求,就是简单调用accept 方法。这个方法接受client的连接请求,并且给new_sock 赋予有关连接的信息。下一节我们回看到new_sock 是如何工作的。