receive und send thread mit asio



  • Hallo zusammen,
    ich wil eine Kommunikation einzelner TCP ports mit asio untereinander ermöglichen
    dazu habe ich bisher folgendens überlegt.
    Jeder port erhält einen receive und einen sende thread.

    bisher klappt das receive soweit auch schon ganz gut:

    int thr_19000()
    {
    	try
    		{	
    
    			int port =19000;
    			boost::asio::io_service io_service;
    			boost::system::error_code error;
    			//boost::system::error_code ignored_error;
    			boost::array<char, 4096> buffer; 
    			tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(),port));
    			tcp::socket socket(io_service);
    			acceptor.accept(socket);	
    
    			while(true)
    			{ 
    // Lesen ....
    

    Nun will ich die empfangenen Daten wieder an einem anderen Port ausgeben.

    Nur weiß ich nicht wie denn wenn bereits eine Verbindung besteht, waret der acceptor weil ja kein Verbindungsaufbau stattfindet.
    Und while (true) geht im send thread ja auch nicht weil ich nicht auf den acceptor von receive zugreifen kann.

    Daher meine Frage kann ich irgendwie die daten an einen bestimmten port ausgeben. Also falls der port bereits benutzt wird mich einklinken und dann senden bzw. wenn er nicht offen ist ihn öffnen und dann senden ??



  • Mache doch eine Map welche Ports auf verbundene Sockets mapt.

    Simon



  • danke für die info.
    Könntest du das vllt etwas genauer erklären, so erschließt mir sich das noch nicht ganz



  • Bitte für die Info...

    Lies doch mal nach für was eine Map ist (std::map<.., ...>).
    http://www.cplusplus.com/reference/stl/map/


Anmelden zum Antworten