每个asio程序都必须有io_server对象。对于服务端和客户端都需要socket对象,通过socket对象的成员函数进行连接和数据通信。服务端需要 acceptor对象来等待连接。
下面的例子是用C++11和boost1.57编写的。
同步TCP通信服务端
#include <boost/asio.hpp>
#include <iostream>
using namespace boost::asio;
int main()
{
try
{
io_service io;
ip::tcp::endpoint ep(ip::tcp::v4(), 6688);
ip::tcp::acceptor acceptor(io, ep);
while (1)
{
ip::tcp::socket sock(io);
acceptor.accept(sock);
std::cout << "client:" << sock.remote_endpoint().address() << std::endl;
sock.write_some(buffer("hello asio"));
}
}
catch (std::exception& e)
{
std::cout << e.what() << std::endl;
}
return 0;
}
同步Tcp通信客户端
#include <boost/asio.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace boost::asio;
int main()
{
try
{
io_service io;
ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 6688);
ip::tcp::socket sock(io);
sock.connect(ep);
char str[1024];
sock.read_some(buffer(str));
std::cout << "receive from" << sock.remote_endpoint().address() << std::endl;;
std::cout << str << std::endl;
}