| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
同步time时间服务器: 
一次只能连接一个客户端,处理一个客户端的事务 
 
例子: 
// 引入头文件建议分区块,可以先引入自己的文件,然后是第三方库,C++,C按照这种顺序,当然反 
 
过来也是可以的 
// C语言的; 
// #include <time.h>//原始C的方式 
#include <ctime>//C++把C的方式改写了,增加了前面一个c字母,后面去掉了.h 
//C++语言的; 
#include <iostream> 
#include <string> 
//第三方库; 
#include <boost/asio.hpp> 
//自己的文件; 
//#include "gameDefine.h" 
 
using boost::asio::ip::tcp; 
 
std::string make_daytime_string() { 
 using namespace std;//For time_t, time and ctime; 
 //time_t now = time(0); 
 auto now = time(nullptr); 
 return ctime(&now); // 返回const char* 
} 
 
int main() { 
 try { 
  boost::asio::io_service io_service; 
   
  // 绑定端口,用1024以下的端口要以root权限运行,建议不要绑定1024以下的端口,不安全 
  tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), 13)); 
 
  for(;;) { 
   //在我们这个应用层是做不到组止某个IP(比如:10.34.32.*)不连接进来,因为只有连接成功后 
 
才能知道它的IP,没法做到,这个功能要到外部工具去实现 
   tcp::socket socket(io_service); 
   acceptor.accept(socket);//柱塞的,程序停在这,一次只能接收一个客户端的服务//3次握手 
 
   //std::string message = make_daytime_string(); 
   auto message = make_daytime_string(); 
 
   boost::system::error_code ignored_error; 
   boost::asio::write(socket, boost::asio::buffer(message), ignored_error);//断开是4次握 
 
手 
//这里析构,断开连接,进入新的循环 
  } 
 } catch (std::exception &e) { 
  std::cerr << e.what() << std::endl; 
 } 
 return 0; 
} |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |