summaryrefslogtreecommitdiff
path: root/client/connect.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'client/connect.hpp')
-rw-r--r--client/connect.hpp60
1 files changed, 53 insertions, 7 deletions
diff --git a/client/connect.hpp b/client/connect.hpp
index 8b36687..5720d4f 100644
--- a/client/connect.hpp
+++ b/client/connect.hpp
@@ -80,6 +80,31 @@ namespace client
buf[ i ] ^= key;
}
+ std::string get_string( ) {
+ std::string ret{ };
+ char buffer[ BUFFER_SIZE ];
+
+
+ while ( true ) {
+ int received = recv( m_socket, buffer, BUFFER_SIZE, 0 );
+ if ( received < 0 )
+ break;
+
+ for ( int i{ }; i < received; ++i )
+ ret.push_back( buffer[ i ] );
+
+ if ( received < BUFFER_SIZE )
+ break;
+ }
+
+ if ( ret.size( ) ) {
+ decode_buffer( ( uint8_t* )ret.data( ), ret.size( ) );
+ ret.erase( ret.begin( ) );
+ }
+
+ return ret;
+ }
+
std::vector< uint8_t > get_msg( ) {
std::vector< uint8_t > ret;
char buffer[ BUFFER_SIZE ];
@@ -105,21 +130,42 @@ namespace client
}
void send_msg( const uint8_t* msg, size_t length ) {
- auto new_buffer = ( uint8_t* )( malloc( length + 1 ) );
+ auto buffer = std::make_unique< uint8_t[ ] >( length + 1 );
auto key = util::random_number( 0, 255 ) & 0xff;
- new_buffer[ 0 ] = key;
- memcpy( new_buffer + 1,
+ buffer[ 0 ] = key;
+ memcpy( buffer.get( ) + 1,
msg,
length );
- for( size_t i = 1; i < length + 1; ++i ) {
- new_buffer[ i ] ^= key;
+ for( size_t i = 1; i <= length; ++i ) {
+ buffer[ i ] ^= key;
}
- send( m_socket, ( char* )new_buffer, length + 1, 0 );
+ int ret = send( m_socket, ( char* )buffer.get( ), length + 1, 0 );
+ if ( ret == SOCKET_ERROR ) {
+ printf( xors( "error sending message error code: %d" ), WSAGetLastError( ) );
+ }
+ }
+
+ void send_msg( const char* msg ) {
+ auto length = strlen( msg );
+ auto buffer = std::make_unique< uint8_t[ ] >( length + 1 );
+ auto key = util::random_number( 0, 255 ) & 0xff;
- free( new_buffer );
+ buffer[ 0 ] = key;
+ memcpy( buffer.get( ) + 1,
+ msg,
+ length );
+
+ for ( size_t i = 1; i <= length; ++i ) {
+ buffer[ i ] ^= key;
+ }
+
+ int ret = send( m_socket, ( char* )buffer.get( ), length + 1, 0 );
+ if ( ret == SOCKET_ERROR ) {
+ printf( xors( "error sending message error code: %d" ), WSAGetLastError( ) );
+ }
}
private: