Compare commits

3 Commits

5 changed files with 17 additions and 8 deletions

View File

@@ -11,8 +11,10 @@ namespace connect_code {
/* Tokenizes a string, based on the given delimiter */
std::vector<std::string> tokenize_str(std::string str, std::string delim) {
std::vector<std::string> result;
char* c_str = str.data();
char* c_delim = delim.data();
/* &str[0] is used to convert an std::string to a char*. I tried using string.data(),
but that appears to return a const char*. */
char* c_str = &str[0];
char* c_delim = &delim[0];
char* tok = strtok(c_str, c_delim);
while (tok != NULL) {

View File

@@ -59,7 +59,7 @@ SOCKET create_socket(int network, char transport) {
}
int create_addr(int network, char* address, int port,struct sockaddr* dest) {
int create_addr(int network, const char* address, int port,struct sockaddr* dest) {
if (network == 4) {
struct sockaddr_in listen_address;
@@ -83,7 +83,7 @@ int create_addr(int network, char* address, int port,struct sockaddr* dest) {
}
SOCKET create_local (int network, char transport, char* address, int port,struct sockaddr* addr_struct) {
SOCKET create_local (int network, char transport, const char* address, int port,struct sockaddr* addr_struct) {
int socket = create_socket(network,transport);
if (socket < 0) {
return (-1 * errno);
@@ -109,7 +109,7 @@ SOCKET create_local (int network, char transport, char* address, int port,struct
return socket;
}
SOCKET create_remote (int network,char transport,char* address,int port,struct sockaddr* remote_addr_struct) {
SOCKET create_remote (int network,char transport, const char* address,int port,struct sockaddr* remote_addr_struct) {
struct addrinfo hints; /* Used to tell getaddrinfo what kind of address we want */
struct addrinfo* results; /* Used by getaddrinfo to store the addresses */

View File

@@ -44,7 +44,7 @@ and dest is a pointer to the sockaddr struct that will be filled in.
The function returns with -202 if the network parameter contained neither '4'
nor '6'. */
int create_addr(int network, char* address, int port,struct sockaddr* dest);
int create_addr(int network, const char* address, int port,struct sockaddr* dest);
@@ -54,7 +54,7 @@ same as above.
It prints the error returned by 'bind' if something went wrong, and returns ( -1 * errno ).*/
SOCKET create_local (int network, char transport, char* address, int port,struct sockaddr* addr_struct);
SOCKET create_local (int network, char transport, const char* address, int port,struct sockaddr* addr_struct);
/* This function utilizes the same functions as 'create_local' but _connects_ to the
@@ -63,7 +63,7 @@ as above. This function needs an empty 'sockaddr *' structure passed to it, whic
If something goes wrong, this function returns with ( -1 * errno ). */
SOCKET create_remote (int network,char transport,char* address,int port,struct sockaddr* remote_addr_struct);
SOCKET create_remote (int network,char transport, const char* address,int port,struct sockaddr* remote_addr_struct);
/* check_ip_ver - This function checks if the given string is an IPv4 address (returns 4),
IPv6 address (returns 6) or neither (returns -1). */

View File

@@ -34,6 +34,9 @@ public:
/* Default constructor */
Sock() {}
/* Virtual destructor */
virtual ~Sock();
/* Regular constructor - defined in sock.cpp */
Sock(int ip_ver, char protocol, const char* address, int port);

View File

@@ -13,6 +13,10 @@ void Sock::create_socket() {
addrlen = sizeof(*dest);
}
/* Virtual destructor, allows 'Server' and 'Client' to override this destructor */
Sock::~Sock() {}
/* Constructor - This function initializes the object attributes with the given
parameters. It throws an exception if an IPv4 address was given, but the type
given is IPv6 (or the other way around). */