1. 程式人生 >實用技巧 >其它 >C++面向物件網路程式設計之SockServer

C++面向物件網路程式設計之SockServer


/************************************************************************/
//Copyright2015,han_gangbiao.Allrightsreserved.
//
//[Time]:2015-6-2722:19:12
//[Author]:han_gangbiao
//[Info]:TCP-ServerDemo
/************************************************************************/

#include"stdafx.h"
#include"xsmart.h"
#include"xnet/SockAcceptor.h"
#include"xbase/xlogger.h"
#include"xbase/xthread.h"
#include<iostream>

intmain(intargc,char*argv[])
{
smart::XSmartLib::init();
XLOG_SET_STDERR(true);
std::cout<<smart::XSmartLib::getLibInfo()<<std::endl;

XNetAddrnet_addr_listen("0.0.0.0",8800);
XSockAcceptoracceptor;
if(acceptor.open(net_addr_listen,false,1)<0)
{
XLOG_INFO("XSockAcceptoropenfailed.");
}

while(1){
XSockStreampeer;
XNetAddrpeer_addr;
if(acceptor.accept(peer,&peer_addr)<0)
{
printf("accepterror!\n");
SLEEP_MS(3000);
continue;
}
XLOG_INFO("connectionfrompeer[%s]",peer_addr.get_ipstr());

charbuffer[4096]={0};
intbytes_received;
while((bytes_received=peer.recv(buffer,sizeof(buffer)))>0)
{
buffer[bytes_received]='\0';
XLOG_INFO("recvdata:%s",buffer);

peer.send(buffer,bytes_received);
}

peer.close();
XLOG_INFO("closethesocket!");
}
smart::XSmartLib::unInit();
return0;
}

轉載於:https://my.oschina.net/jackhen/blog/471562