TCP/IP und Java



  • Hallo Leute!

    Ich programmiere eigetnlich C++ und muss jetzt aber ein vorhandenes C++ Programm in Java umschreiben.

    Die akutelle C++ Klasse an der ich derzeit arbeite ist ein TCP/IP-Client :

    Header:

    #include <iostream>
    #include <string>
    #include <boost/asio.hpp>
    #include <boost/thread/thread.hpp>
    
    using boost::asio::ip::tcp;
    
    class create_client_com
    {
    public:
    	int error_code;
    	std::string recv_msg;
    	std::string error_msg;
    
        boost::asio::io_service io_service;
    	tcp::resolver resolver;
        tcp::resolver::query query;
        tcp::resolver::iterator endpoint_iterator;
        tcp::resolver::iterator end;
    
    	boost::system::error_code error;
    	boost::system::error_code ignored_error;
    
    	tcp::socket socket;
    
    	void send(char[]);
    	size_t recv(char dat[]);
    	int get_error(void);
    
    	create_client_com(const char* , const char*);
    
    	~create_client_com(void);
    };
    

    Source:

    #include "create_client_com.h"
    
    #include <string>
    #include <iostream>
    #include <boost/asio.hpp>
    
    using boost::asio::ip::tcp;
    
    create_client_com::create_client_com(const char* ip_adress, const char* port) : resolver( io_service ), query(ip_adress, port) ,socket(io_service)
    {
    	error_code=0;
    
    	try
    	{
    		std::cout << "Verbindung zu <IP: " << ip_adress << " >   <Port: " << port << " > wird hergestellt...\n";
    		endpoint_iterator = resolver.resolve(query);
    	    error =  boost::asio::error::host_not_found;
    		while (error && endpoint_iterator != end)
    		{
    		  socket.close();
    		  socket.connect(*endpoint_iterator++, error);
    		}
    		if (error)
    		  throw boost::system::system_error(error);
    
    		std::cout << "Verbindung hergestellt!\n";
        }
    	catch (std::exception& e)
    	{
    		error_code = 1;
    		std::cout << "Fehler in create_client_com Konstruktor!\n";
    		std::cerr << e.what() << std::endl;
    	}
    }
    
    create_client_com::~create_client_com(void)
    {
    	  socket.close();
    }
    
    void create_client_com::send(char buf_send[])
    {
    	try{
    		//Schreiben
    		boost::asio::write(socket, boost::asio::buffer(buf_send),
    		boost::asio::transfer_all(), ignored_error); //schreibt solange bis speicher voll (ca. 48259 Bytes)
    	}
    	catch (std::exception& e)
        {
    		error_code = 2;
    		std::cerr << e.what() << std::endl;
        }
    }
    
    size_t create_client_com::recv(char dat[])
    {
    	char temp[2000] = {'\0'};
    
        try{
    	    //Lesen
    		size_t len = socket.read_some(boost::asio::buffer(temp), error); //Blockierende Funktion!
    		if (error == boost::asio::error::eof)
    		{
    			std::cout << "Connection closed cleanly by peer.\n";
    			error_code = 3;
    		}
    		else if (error)
    		{
    			error_code = 5;
    			throw boost::system::system_error(error); // Some other error.
    		}
    
    		if(temp[len] != '\0') temp[len] = '\0';
            for(int i=0; i <=  (int)len ;i++) dat[i] = temp[i];
    		return len;
       }
       catch (std::exception& e)
       {
    		error_code = 4;
    		std::cerr << e.what() << std::endl;
    		return 0;
       }
    }
    
    int create_client_com::get_error()
    {
    	return error_code;
    }
    

    Ich bräuchte dazu ( TCP-Client aufbauen) nen kleines Tutorial.
    Gibt es gute, kurze und deutsche ( 😉 )?

    Gruß
    WAR][FIRE





  • Danke! 🙂


Anmelden zum Antworten