3.2 Client –
链接到服务器
列表 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;
}
#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 是如何工作的。
#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;
}
转载于:https://blog.51cto.com/thinkinginmind/174877