写了个小型的ASIO TcpSocket测试小实例,分两部分,客户端C++,服务端模拟是Python
C++ 代码如下:
std::thread t([=]() {
asio::io_service io_service;
asio::ip::tcp::endpoint end_point(asio::ip::address::from_string("10.10.10.111"), 8088);
asio::ip::tcp::socket socket(io_service);
asio::error_code ec;
socket.connect(end_point, ec);
if (ec) {
CCLOG("error");
socket.close();
}
else {
CCLOG("Success");
char buf[100];
size_t len = socket.read_some(asio::buffer(buf), ec);// 读取数据
if (len > 0) {
std::string value(buf, len);
CCLOG("value:%s", value.c_str());
std::cout.write(buf, len);
socket.write_some(asio::buffer("123456"), ec);// 发送数据
}
}
});
t.detach();
服务端Python代码:
def initSock():
sock = socket(AF_INET,SOCK_STREAM)
ADDR=("10.10.10.111", 8088)
sock.bind(ADDR)
sock.listen(5)
while True:
print "waiting for connectiong"
tcpClient,addr = sock.accept()
print ('connect from',addr)
s = 'Hello world %s' %(ctime())
tcpClient.send(s.encode("utf-8"))
while True:
try:
data = tcpClient.recv(1024)
except:
print("exception")
tcpClient.close()
break
if not data:
print("invalid data")
break;
else:
print data
tcpClient.close()
sock.close()