wiedermal boost:asio...
-
Die Exception ist:
Permission deniedAber leider steht nicht wo...
MFG
-
Jetzt hab ich das ganze als root ausgeführ und es kommt schon mal keine Exception mehr.
Doch würde ich gerne wissen warum ich es nur als root und nicht als normaler User ausführen kann. Ich benutze Ubuntu;MFG
-
So, nachdem ich jetzt noch schnell einen Client geschrieben habe, gibt der mir als Antwort:
Connection refusedWas mach ich falsch???
-
Wie, wo, wann, in welchem Client? Mehr Infos bitte

-
ok hier kommt der Client:
class TCPClient { public: TCPClient(string ip,short port); ~TCPClient(); void setRecvBuffer(boost::array<char, 1024> *buf, boost::mutex *lock); void setSendBuffer(boost::array<char, 1024> *buf, boost::mutex *lock); void setLog(vector<string> *log, boost::mutex *lock); bool connect(void); void receiver(void); void sender(void); private: /* guarantees clean thread shutdown */ bool shutdown; boost::mutex stopLock; /* buffers and locks for received- and to be sent content */ boost::array<char, 1024> *p_recvBuf; boost::array<char, 1024> *p_sendBuf; boost::mutex *p_recvLock; boost::mutex *p_sendLock; /* buffer and lock for event-logging */ vector<string> *p_log; boost::mutex *p_logLock; /* TCP-socket */ short port; boost::asio::ip::address ipaddress; boost::asio::io_service io_service; tcp::socket socket; };main:
int main(void) { try { boost::array<char, 1024> sendBuf; boost::array<char, 1024> recvBuf; boost::mutex sendLock; boost::mutex recvLock; TCPClient Client("127.0.0.1",13); //Server.TCPsetPort(13); Client.setRecvBuffer(&recvBuf,&recvLock); // Buffer must be of length 1024 Client.setSendBuffer(&sendBuf,&sendLock); // Buffer must be of length 1024 Client.connect(); while(1){ asm volatile(""); }; } catch(boost::system::system_error &e) { printf("%s\n",e.what()); } }LG
-
sry hab die .cpp vergessen

TCPClient::TCPClient(string ip, short p): socket(io_service) { ipaddress.from_string(ip.c_str()); port = p; } TCPClient::~TCPClient() { } void TCPClient::setRecvBuffer(boost::array<char, 1024> *buf, boost::mutex *lock) { p_recvBuf = buf; p_recvLock = lock; } void TCPClient::setSendBuffer(boost::array<char, 1024> *buf, boost::mutex *lock) { p_sendBuf = buf; p_sendLock = lock; } void TCPClient::setLog(vector<string> *log, boost::mutex *lock) { p_log = log; p_logLock = lock; } bool TCPClient::connect(void) { boost::system::error_code error; boost::asio::ip::tcp::endpoint endpt; endpt.address(ipaddress); socket.connect(endpt,error); if (error) throw boost::system::system_error(error); } void TCPClient::receiver(void) { bool exit = false; while(!exit) { boost::mutex::scoped_lock recvlock(*p_recvLock); boost::system::error_code ignored_error; socket.read_some(boost::asio::buffer(*p_recvBuf), ignored_error); boost::mutex::scoped_lock stoplock(stopLock); exit = shutdown; } } void TCPClient::sender(void) { bool exit = false; while(!exit){ boost::mutex::scoped_lock sendlock(*p_sendLock); boost::system::error_code ignored_error; boost::asio::write(socket, boost::asio::buffer(*p_sendBuf), boost::asio::transfer_all(), ignored_error); boost::mutex::scoped_lock stoplock(stopLock); exit = shutdown; } }
-
Auf POSIX-Systemen können die ports unter 1024 nur vom "root" benutzt werden um einen Server darauf zum lauschen anzulegen.
BR
-
Ich hab es jetzt auf Port 4000 gelegt und kann den Server zwar jetzt ohne root-Rechte ausführen,
allerdings bekomme ich vom Client immer noch ein "Connection refused"
LG
-
Außerdem ist Port 13 für den DayTime-Dienst reserviert: http://de.wikipedia.org/wiki/Daytime
-
So Leute, ich denke ich habe das Problem gefunden:
Ich habe beim Verbinden keinen Port angegeben.
LG