Ticket #11527: BUG.cpp

File BUG.cpp, 1.9 KB (added by danial1360@…, 7 years ago)

source code of the problem

Line 
1#include <boost/asio/io_service.hpp>
2#include <boost/asio/write.hpp>
3#include <boost/asio/buffer.hpp>
4#include <boost/asio/ip/tcp.hpp>
5#include <chrono>
6#include <iostream>
7#include <thread>
8#include <boost/exception/all.hpp>
9#include <exception>
10#include <thread>
11#include <array>
12#include <boost/asio.hpp>
13
14void server()
15{
16
17 std::array<char, 4096> bytes;
18 boost::asio::io_service io;
19 boost::asio::ip::tcp::acceptor acc(io, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 5006));
20 boost::asio::ip::tcp::socket skt(io);
21
22
23
24 std::cout << "server listeing\n";
25 acc.listen();
26 acc.accept(skt);
27 std::cout << "server aceepted\n";
28 // now the concnetion is made and we cansend and recive data
29 //send
30 for (;;)
31 {
32 skt.write_some(boost::asio::buffer("message from server"));
33 std::cout << "server wrting\n";
34 skt.read_some(boost::asio::buffer(bytes));
35 std::cout << "server reading\n";
36 }
37
38
39}
40void client()
41{
42
43 std::array<char, 4096> bytes;
44 boost::asio::io_service io;
45 boost::asio::ip::tcp::resolver::query qury{ "localhost", "5006" };
46 boost::asio::ip::tcp::resolver rslv(io);
47 boost::asio::ip::tcp::socket skt(io);
48
49 boost::system::error_code error_ = boost::asio::error::host_not_found;
50 auto it = rslv.resolve(qury, error_);
51 boost::asio::ip::tcp::resolver::iterator end;
52 std::cout << "client try to connect\n";
53 boost::asio::connect(skt, it);
54 // if I use this one this will crash !!
55 //while (error_ && it != end)
56 //{
57 // skt.close();
58 // skt.connect(*it++, error_);
59 //}
60 std::cout << "client connected\n";
61
62
63 //now we are connected
64 //read data!
65 for (;;)
66 {
67
68 skt.write_some(boost::asio::buffer("message from client "));
69
70 std::cout << "client wrting\n";
71 skt.read_some(boost::asio::buffer(bytes));
72 std::cout << "client reading\n";
73 }
74}
75int main()
76{
77 std::thread t1{ &client }, t2{ &server };
78 t1.join();
79 t2.join();
80 std::cin.get();
81}