【cocos2dx網路遊戲】搭建CS架構的基本通訊框架(一)server
阿新 • • 發佈:2019-02-05
#include <iostream> using namespace std; #include "comm.h" void proc_data(socket_type sock) { //輸出客戶端的地址的字串 cout<<"client connected :"<<sock->remote_endpoint().address()<<endl; while (true) { //捕獲可能發生的異常 try { //使用字元陣列 vector<char> str(100, 0); //讀取客戶端傳送的資料 //同步機制,阻塞讀取資料 sock->read_some(buffer(str)); cout<<"recv from:"<<sock->remote_endpoint().address()<<endl; cout<<"data:"<<&str[0]<<endl; cout<<endl; //將客戶端傳送的資料回顯 sock->write_some(buffer(str)); } catch(std::exception& e) { cout<<e.what()<<endl; break; } } } //處理網路連線 void proc_accept() { cout<<"wait connect..."<<endl; io_service ios; //asio程式必須的io_service物件 ip::tcp::endpoint ep(ip::tcp::v4(), PORT_NUM); //用於接收連線 ip::tcp::acceptor acceptor(ios, ep); while (true) { //初始化一個socket物件 socket_type sock(new ip::tcp::socket(ios)); //阻塞等待socket連線 acceptor.accept(*sock); //為每一個建立連線的客戶端建立一個執行緒處理資料 thread t(proc_data, sock); } } int main(int argc, char *argv[]) { //建立執行緒,以及傳遞執行緒處理函式 thread t1(proc_accept); //執行緒阻塞等待,知道執行緒處理結束 t1.join(); return 0; };