Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 15:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Boost::asio

Discussion on Boost::asio within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1

 
herlex's Avatar
 
elite*gold: 3
The Black Market: 171/1/1
Join Date: Aug 2012
Posts: 2,066
Received Thanks: 300
Boost::asio

Heyho. habe ein Problem mit der async_read function der boost asio library.
Ich möchte einen kompletten Satz von Programm1 zu Programm2 schicken, allerdings wird der String/Buffer sehr ungewöhnlich und komisch getrennt, wenn man versucht diesen dann zu readen.....


Kann mir da jemand weiterhelfen?
Ich weiß, dass das hier sehr einfach gehaltene Fragen sind.
Für mehr Details bitte per PN melden.

Brauche dringend Hilfe!
Danke!
herlex is offline  
Old 10/09/2014, 15:52   #2
 
elite*gold: 8
Join Date: Sep 2014
Posts: 625
Received Thanks: 178
Schick mir deinen Skypenamen via PM.
qqdev is offline  
Old 10/09/2014, 16:03   #3
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Ich nehme mal snow die Arbeit ab.
Wenn du Hilfe willst dann schreib doch gleich in das Thema alle relevanten Sachen zu der Frage. Ich meine warum sollte man dir unbedingt eine PM schreiben ? Ist der code etwa "geheim" oder was ganz tolles was du hier bloß nicht teilen willst ? Wenn ja, dann solltest du dich damit abfinden, dass du nicht viel Hilfe, wenn überhaupt welche, bekommst. Elitepvpers ist immer noch ein Forum und keine Partnerbörse (alle credits zu snow für den satz :P ).
th0rex is offline  
Thanks
1 User
Old 10/09/2014, 16:48   #4

 
herlex's Avatar
 
elite*gold: 3
The Black Market: 171/1/1
Join Date: Aug 2012
Posts: 2,066
Received Thanks: 300
ja. der code ist geheim. ist ein noch nicht patentiertes projekt, das grade im entstehen ist.
brauch halt hilfe mnit diesem dummen async_read, da das bei mir nicht hinhaut.

greetz.
herlex is offline  
Old 10/09/2014, 17:02   #5
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Mach den Fehler reproduzierbar und poste die Problemstellung hier. Falls zu viel Ramsch drumherum ist, erstell ein kleines Projekt mit genau diesem Fehler.
Schlüsselbein is offline  
Thanks
1 User
Old 10/09/2014, 17:59   #6


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by MaggieSimpson View Post
Ich möchte einen kompletten Satz von Programm1 zu Programm2 schicken, allerdings wird der String/Buffer sehr ungewöhnlich und komisch getrennt,
Hängt vielleicht ein Nullterminator dazwischen?
Mostey is offline  
Old 10/09/2014, 21:26   #7

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
Quote:
Ich möchte einen kompletten Satz von Programm1 zu Programm2 schicken, allerdings wird der String/Buffer sehr ungewöhnlich und komisch getrennt,
Das liegt wahrscheinlich an der Eigenart des TCP-Protokolls, Stream ist das gesuchte Stichwort.
Delinquenz is offline  
Old 10/09/2014, 22:41   #8

 
herlex's Avatar
 
elite*gold: 3
The Black Market: 171/1/1
Join Date: Aug 2012
Posts: 2,066
Received Thanks: 300
Ich baue eine Verbindung zwischen zwei Konsolenanwendungen auf.
Erste Anwendung = Server.
Der Server hört endlos mit async_read_some darauf, ob etwas reinkommt.
Wenn etwas reinkommt wird der input in einem boost::array<char, 4096> buffer gespeichert. Dann wird der Readhandler aufgerufen, indem mit std::cout die bufferdata durch folgenden code ausgegeben wird.

std::cout << std::string(buffer.data(), bytes_transferred) << std::endl;

Die Client Anwendung sendet per async_write lediglich den Text an den Server.
Das Problem liegt vermutlich an async_read_some....

Habe es schon mit async_read_until versucht und einen delimiter wie \r eingefügt, allerdings funktioniert das auch nicht.

Greetz. Hoffe das ist ausführlich genug fürs erste
herlex is offline  
Old 10/10/2014, 08:52   #9
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Schon mal async_read oder socket.async_receive probiert ?
th0rex is offline  
Old 10/10/2014, 13:54   #10

 
herlex's Avatar
 
elite*gold: 3
The Black Market: 171/1/1
Join Date: Aug 2012
Posts: 2,066
Received Thanks: 300
Quote:
Originally Posted by omitma View Post
Schon mal async_read oder socket.async_receive probiert ?
Jop. Bei beidemder selbe Effekt...
herlex is offline  
Old 10/10/2014, 15:22   #11
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Also ich glaube dass wir dir hier nicht weiter helfen können, ohne wirklichen Code zu sehen.
Extrahier so wie schon von Schlüsselbein vorgeschlagen den wichtigsten Code in ein neues Projekt, und bau Server und Client so abgespeckt wie möglich. Wenn der Fehler noch existiert, gib uns den Code, nur dann kann dir auch geholfen werden

Padmak
Padmak is offline  
Old 10/10/2014, 22:34   #12


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by MaggieSimpson View Post
std::string(buffer.data(), bytes_transferred)
Quote:
Originally Posted by Mostey View Post
Hängt vielleicht ein Nullterminator dazwischen?
^

Sieht sogar sehr wahrscheinlich nach einem Nullterminator in der Mitte aus. Du solltest das mal selber prüfen wenn du schon keinen Code posten möchtest...
Mostey is offline  
Old 10/13/2014, 07:47   #13

 
herlex's Avatar
 
elite*gold: 3
The Black Market: 171/1/1
Join Date: Aug 2012
Posts: 2,066
Received Thanks: 300
Ich werde heute Abend/morgen mal was posten.
Wenn man einen String so an den Server vom Client sendet: "Hallo Du"
Dann erhält der Server diesen String so.

Hallo
Du

bzw. wenn der String so aussieht: "Hallo Wie geht es dir"
Dann sieht das ganze so aus:

Hallo
Wiegehtesdir

Hier der Code:

Code:
#include <boost/asio.hpp> 
#include <boost/array.hpp> 
#include <iostream> 
#include <string> 

boost::asio::io_service io_service; 
boost::asio::ip::tcp::resolver resolver(io_service); 
boost::asio::ip::tcp::socket sock(io_service); 
boost::array<char, 4096> buffer; 

void read_handler(const boost::system::error_code &ec, std::size_t bytes_transferred) 
{ 
  if (!ec) 
  { 
    std::cout << std::string(buffer.data(), bytes_transferred) << std::endl; 
    sock.async_read_some(boost::asio::buffer(buffer), read_handler); 
  } 
} 

void connect_handler(const boost::system::error_code &ec) 
{ 
  if (!ec) 
  { 
    sock.async_read_some(boost::asio::buffer(buffer), read_handler); 
  } 
} 

void resolve_handler(const boost::system::error_code &ec, boost::asio::ip::tcp::resolver::iterator it) 
{ 
  if (!ec) 
  { 
    sock.async_connect(*it, connect_handler); 
  } 
} 

int main() 
{ 
  boost::asio::ip::tcp::resolver::query query("ip", "80"); 
  resolver.async_resolve(query, resolve_handler); 
  io_service.run(); 
}
herlex is offline  
Old 10/13/2014, 16:47   #14

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
Dass der String abgeschnitten ankommt, liegt, wie ich bereits anmerkte, in der Natur des TCP-Protokolls.
Delinquenz is offline  
Reply


Similar Threads Similar Threads
League of Legends Elo Boost --- Division Boost Push Eloboost LoL Boost
08/11/2014 - League of Legends Trading - 5 Replies
.
boost::asio::read_until problem
12/14/2013 - C/C++ - 0 Replies
N' Abend, ich habe ein kleines Problem, und zwar liest boost::asio::read_until Bytes bis zu einem bestimmten Delimiter, es kann aber durchaus vorkommen das mehr Daten im Receive Buffer geschrieben werden, als der Delimiter endet. Somit habe ich mir etwas geschrieben, um alle vollständigen Packets von dem Receive Buffer zu bekommen, dass klappt auch soweit. Das Problem hierbei ist aber, wenn ein unvollständiges Packet am Ende steht, versucht er es zu verarbeiten und anschließend zu...
boost::asio::buffer Problem
11/15/2013 - C/C++ - 13 Replies
Hello guys, i am writing a private server in c++ and i searched a library for networking. Boost was referenced really often so i used it. Now i want to write something to the socket by using boost::asio::async_write(). The problem is that i need to concat 3 things. The first thing is a string the second thing an string and the third a string aswell. I tried this: boost::asio::async_write(sock,boost::asio::buffer ("RDY|I|" + x + ...



All times are GMT +1. The time now is 15:54.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.