mawinkle 6 jaren geleden
bovenliggende
commit
cc51c8504f
3 gewijzigde bestanden met toevoegingen van 36 en 13 verwijderingen
  1. 7 5
      server.cpp
  2. 13 5
      socketio_posix.cpp
  3. 16 3
      test.cpp

+ 7 - 5
server.cpp

@@ -27,12 +27,14 @@ int main(){
 	while(true){
 		cppsocket sock = ssock.accept_connection();
 		try{
-			std::vector<char> vec = sock.receive();
-			std::string resp(100, 'a');
-			for(unsigned int i = 0;i < resp.size();i++){
-				resp[i] = dis(gen) + 'a';
+			while(true){
+				std::vector<char> vec = sock.receive();
+				std::string resp(100, 'a');
+				for(unsigned int i = 0;i < resp.size();i++){
+					resp[i] = dis(gen) + 'a';
+				}
+				sock.write("Hallo " + resp);
 			}
-			sock.write("Hallo " + resp);
 			sock.close();
 			std::cout << "Closed\n";
 		}

+ 13 - 5
socketio_posix.cpp

@@ -53,11 +53,15 @@ void cppsocket::write(const std::string& message){
 		std::memcpy(cs, message.c_str() + i,buffersize);
 		if((i + buffersize) < message.length()){
 			cs[buffersize] = 'c';
-			send(sock, cs, buffersize + 1, 0);
+			if(send(sock, cs, buffersize + 1, 0) < 0){
+				throw socket_exception("Couldn't write to peer");
+			}
 		}
 		else{
 			cs[message.length() - i] = (char)0;
-			send(sock, cs, message.length() - i, 0);
+			if(send(sock, cs, message.length() - i, 0) < 0){
+				throw socket_exception("Couldn't write to peer");
+			}
 		}
 	}
 }
@@ -67,11 +71,15 @@ void cppsocket::write(const std::vector<char>& message){
 		std::memcpy(cs, message.data() + i,buffersize);
 		if((i + buffersize) < message.size()){
 			cs[buffersize] = 'c';
-			send(sock, cs, buffersize + 1, 0);
+			if(send(sock, cs, buffersize + 1, 0) < 0){
+				throw socket_exception("Couldn't write to peer");
+			}
 		}
 		else{
 			cs[message.size() - i] = (char)0;
-			send(sock, cs, message.size() - i, 0);
+			if(send(sock, cs, buffersize + 1, 0) < 0){
+				throw socket_exception("Couldn't write to peer");
+			}
 		}
 	}
 }
@@ -84,7 +92,7 @@ std::vector<char> cppsocket::receive(){
 		stor.insert(stor.end(), buffer.begin(), buffer.begin() + std::min(val, (size_t)buffersize));
 		if(buffer.data()[buffersize] == (char)0)break;
 	}
-	return std::move(stor);
+	return stor;
 }
 server_socket::server_socket(int _port) : port_(_port){
 	int opt = 1;

+ 16 - 3
test.cpp

@@ -1,5 +1,7 @@
 #include "socketio.hpp"
 #include <iostream>
+#include <thread>
+#include <chrono>
 template<typename T>
 std::ostream& operator<<(std::ostream& out, std::vector<T> o){
 	out << "[";
@@ -20,13 +22,24 @@ std::ostream& operator<< <char>(std::ostream& out, std::vector<char> o){
 }
 int main(){
 	cppsocket sock("192.168.178.79", 80);
-	std::vector<char> toSend(1000000);
+	//cppsocket sock("127.0.0.1", 80);
+	std::vector<char> toSend(1000);
 	for(unsigned int i = 0;i < toSend.size();i++){
 		toSend[i] = (char)(i * i);
 	}
 	std::cout << "Writing..." << std::endl;
-	sock.write(toSend);
-	std::cout << "Receiving..." << std::endl;
+	std::cout << errno << std::endl;
+	try{
+		for(int i = 0;i < 100;i++){
+			sock.write(toSend);
+			std::cout << sock.receive() << std::endl;
+			std::this_thread::sleep_for(std::chrono::milliseconds(1000));
+		}
+	}
+	catch(std::exception& e){
+		std::cout << e.what() << std::endl;
+	}
+	std::cout << "Sent "  << std::to_string(toSend.size()) << ", Receiving..." << std::endl;
 	std::vector<char> vec = sock.receive();
 	std::cout << (vec == toSend);
 	std::cout << vec << std::endl;