mirror of
https://github.com/caperren/school_archives.git
synced 2025-11-09 21:51:15 +00:00
Added work from my other class repositories before deletion
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
#include "ChatClient.h"
|
||||
|
||||
ChatClient::ChatClient(int port_number, string hostname) {
|
||||
// Set the port number and hostname based on the constructor inputs
|
||||
this->__port_number = port_number;
|
||||
this->__host_name = hostname;
|
||||
|
||||
// Set flags to default values
|
||||
this->__run_flag = true;
|
||||
this->__set_user_handle_flag = true;
|
||||
this->__setup_client_connection_flag = true;
|
||||
this->__chat_with_server_flag = true;
|
||||
|
||||
// Print out the welcome screen
|
||||
cout << "########################################" << endl;
|
||||
cout << " Chat Client - Version 1.0 " << endl;
|
||||
cout << " Written by Corwin Perren " << endl;
|
||||
cout << "########################################" << endl;
|
||||
}
|
||||
|
||||
void ChatClient::set_handle(){
|
||||
// Ask the user for their handle
|
||||
string handle;
|
||||
cout << "Please enter your desired handle (10 characters max): ";
|
||||
getline(cin, handle);
|
||||
|
||||
// Pull out a 10 character substring to make sure we don't go over the limit
|
||||
handle = handle.substr(0, 10);
|
||||
|
||||
// Set the user's handle and printout
|
||||
this->__user_handle = handle;
|
||||
cout << "Handle set to: " << handle << "." << endl;
|
||||
cout << "########################################" << endl;
|
||||
}
|
||||
|
||||
void ChatClient::setup_connection(){
|
||||
// Print out who we're connecting to
|
||||
cout << "\n########################################" << endl;
|
||||
cout << "Attempting to connect to \"" << this->__host_name << "\" on port " << this->__port_number << "." << endl;
|
||||
|
||||
struct sockaddr_in serv_addr;
|
||||
struct hostent *server;
|
||||
|
||||
// Create a new Internet TCP socket file descriptor
|
||||
this->__inet_file_descriptor = socket(AF_INET, SOCK_STREAM, 0);
|
||||
|
||||
// Make sure it was made successfully
|
||||
if(this->__inet_file_descriptor < 0 ){
|
||||
cout << "ERROR: Error opening socket. Exiting..." << endl;
|
||||
this->__run_flag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Translate the input host name to usable struct by the library
|
||||
server = gethostbyname(this->__host_name.c_str());
|
||||
|
||||
// Verify that this worked. Will fail if the host doesn't exist
|
||||
if(server == NULL){
|
||||
cout << "Host does not exist. Exiting..." << endl;
|
||||
this->__run_flag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Empty the sockaddr struct
|
||||
bzero((char *) &serv_addr, sizeof(serv_addr));
|
||||
|
||||
// Set the connection type
|
||||
serv_addr.sin_family = AF_INET;
|
||||
|
||||
// Copy over the connection information from gethostname above
|
||||
bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
|
||||
|
||||
// Set the port
|
||||
serv_addr.sin_port = htons(this->__port_number);
|
||||
|
||||
// Attempt to open the file descriptor with this connection information
|
||||
int connection_result = connect(this->__inet_file_descriptor, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
|
||||
|
||||
// Let the user know if this failed
|
||||
if(connection_result < 0){
|
||||
cout << "ERROR: Error connecting to server. Please check host and port. Exiting..." << endl;
|
||||
this->__run_flag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// We made it here, so success! Connected!
|
||||
cout << "Connection to server successful!" << endl;
|
||||
cout << "Ready to chat. You send first!" << endl;
|
||||
cout << "########################################" << endl;
|
||||
}
|
||||
|
||||
void ChatClient::chat_with_server(){
|
||||
int result;
|
||||
|
||||
// Reset variables and print out user's handle for message prompt
|
||||
string handle_message(this->__user_handle + "> ");
|
||||
string user_message;
|
||||
cout << handle_message;
|
||||
|
||||
// Read in the user's message
|
||||
getline(cin, user_message);
|
||||
|
||||
// Make a complete version of the message to send that has their handle
|
||||
string full_message(handle_message + user_message);
|
||||
|
||||
// Write this data to the server
|
||||
result = write(this->__inet_file_descriptor, full_message.c_str(), strlen(full_message.c_str()));
|
||||
|
||||
// Let the user know if sending failed
|
||||
if(result < 0){
|
||||
cout << "ERROR: Error sending message. Connection may have been lost. Exiting..." << endl;
|
||||
this->__run_flag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// If the user sent the quit message, close the socket and exit the program
|
||||
if(user_message.find("\\quit") != string::npos){
|
||||
close(this->__inet_file_descriptor);
|
||||
this->__run_flag = false;
|
||||
cout << "Closed connection with server!" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Empty a receive buffer
|
||||
char buffer[1025];
|
||||
bzero(buffer, 1025);
|
||||
|
||||
// Read in a message from the server
|
||||
result = read(this->__inet_file_descriptor, buffer, 1024);
|
||||
|
||||
// If this failed, let the user know
|
||||
if(result < 0){
|
||||
cout << "ERROR: Error sending message. Connection may have been lost. Exiting..." << endl;
|
||||
this->__run_flag = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Convert the received byte array to a string
|
||||
string received_message(buffer);
|
||||
|
||||
// Check if the message from the server included the quit message. If so
|
||||
// close the socket and exit the program
|
||||
if(received_message.find("\\quit") != string::npos){
|
||||
close(this->__inet_file_descriptor);
|
||||
this->__run_flag = false;
|
||||
cout << "Server closed connection!" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// If this was a normal message, print it to the screen
|
||||
cout << received_message << endl;
|
||||
}
|
||||
|
||||
void ChatClient::run(){
|
||||
|
||||
// This is the main processing loop for the chat client. It starts by
|
||||
// getting the user's handle, then attempts to open a connection to the
|
||||
// server. If these are successful, then the user can chat with the server
|
||||
// until either the server of client quits.
|
||||
while(this->__run_flag){
|
||||
if(this->__set_user_handle_flag){
|
||||
this->set_handle();
|
||||
this->__set_user_handle_flag = false;
|
||||
}else if(this->__setup_client_connection_flag){
|
||||
this->setup_connection();
|
||||
this->__setup_client_connection_flag = false;
|
||||
}else if(this->__chat_with_server_flag){
|
||||
this->chat_with_server();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
#ifndef CHATCLIENT_H
|
||||
#define CHATCLIENT_H
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <netdb.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
class ChatClient {
|
||||
public:
|
||||
ChatClient(int port_number, string hostname);
|
||||
|
||||
void set_handle();
|
||||
void setup_connection();
|
||||
void chat_with_server();
|
||||
void run();
|
||||
|
||||
private:
|
||||
int __port_number;
|
||||
string __host_name;
|
||||
|
||||
string __user_handle;
|
||||
|
||||
int __inet_file_descriptor;
|
||||
|
||||
bool __run_flag;
|
||||
|
||||
bool __set_user_handle_flag;
|
||||
bool __setup_client_connection_flag;
|
||||
bool __chat_with_server_flag;
|
||||
};
|
||||
|
||||
#endif /* CHATCLIENT_H */
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
all: clean build
|
||||
|
||||
build:
|
||||
g++ main.cpp ChatClient.h ChatClient.cpp -o chatclient
|
||||
|
||||
clean:
|
||||
rm -f chatclient
|
||||
@@ -0,0 +1,70 @@
|
||||
/////////////////////////////////////
|
||||
// Imports
|
||||
/////////////////////////////////////
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "ChatClient.h"
|
||||
|
||||
/////////////////////////////////////
|
||||
// Namespace Declarations
|
||||
/////////////////////////////////////
|
||||
using namespace std;
|
||||
|
||||
/////////////////////////////////////
|
||||
// Global Variables
|
||||
/////////////////////////////////////
|
||||
#define PORT_MIN 1024
|
||||
#define PORT_MAX 65535
|
||||
|
||||
#define UN_INIT "NOT INITIALIZED"
|
||||
|
||||
/////////////////////////////////////
|
||||
// Main Definition
|
||||
/////////////////////////////////////
|
||||
int main(int argc, char** argv) {
|
||||
// If there aren't enough arguments, quit and tell the user
|
||||
if(argc < 5){
|
||||
cout << "Not enough arguments. Exiting..." << endl;
|
||||
cout << "usage: chatclient -port [port_number] -hostname [host_name]" << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int port = -1;
|
||||
string host(UN_INIT);
|
||||
|
||||
// Go through the arguments and pull out the port and hostname
|
||||
for(int i = 0 ; i < argc ; i++){
|
||||
char *argument = argv[i];
|
||||
if(string("-port").compare(argument) == 0){
|
||||
port = atoi(argv[i+1]);
|
||||
}else if(string("-hostname").compare(argument) == 0){
|
||||
host = string(argv[i+1]);
|
||||
}
|
||||
}
|
||||
|
||||
// Do a quick check to make sure the port is valid
|
||||
if((port < PORT_MIN) || (port > PORT_MAX)){
|
||||
cout << "Incorrect port value entered. Exiting..." << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Do the same with the host
|
||||
if(host.compare(UN_INIT) == 0){
|
||||
cout << "No hostname entered. Exiting..." << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make and instance of the chat client and run its main processing loop
|
||||
ChatClient client = ChatClient(port, host);
|
||||
client.run();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configurationDescriptor version="100">
|
||||
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
|
||||
<df root="." name="0">
|
||||
<in>ChatClient.cpp</in>
|
||||
<in>ChatClient.h</in>
|
||||
<in>main.cpp</in>
|
||||
</df>
|
||||
<logicalFolder name="ExternalFiles"
|
||||
displayName="Important Files"
|
||||
projectFiles="false"
|
||||
kind="IMPORTANT_FILES_FOLDER">
|
||||
<itemPath>Makefile</itemPath>
|
||||
<itemPath>nbproject/private/launcher.properties</itemPath>
|
||||
</logicalFolder>
|
||||
</logicalFolder>
|
||||
<sourceFolderFilter>^(nbproject)$</sourceFolderFilter>
|
||||
<sourceRootList>
|
||||
<Elem>.</Elem>
|
||||
</sourceRootList>
|
||||
<projectmakefile>Makefile</projectmakefile>
|
||||
<confs>
|
||||
<conf name="Default" type="0">
|
||||
<toolsSet>
|
||||
<compilerSet>default</compilerSet>
|
||||
<dependencyChecking>false</dependencyChecking>
|
||||
<rebuildPropChanged>false</rebuildPropChanged>
|
||||
</toolsSet>
|
||||
<codeAssistance>
|
||||
</codeAssistance>
|
||||
<makefileType>
|
||||
<makeTool>
|
||||
<buildCommandWorkingDir>.</buildCommandWorkingDir>
|
||||
<buildCommand>${MAKE} -f Makefile</buildCommand>
|
||||
<cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
|
||||
<executablePath></executablePath>
|
||||
<ccTool>
|
||||
<incDir>
|
||||
<pElem></pElem>
|
||||
</incDir>
|
||||
</ccTool>
|
||||
</makeTool>
|
||||
<preBuild>
|
||||
<preBuildCommandWorkingDir>.</preBuildCommandWorkingDir>
|
||||
<preBuildCommand></preBuildCommand>
|
||||
</preBuild>
|
||||
</makefileType>
|
||||
<item path="ChatClient.cpp" ex="false" tool="1" flavor2="0">
|
||||
</item>
|
||||
<item path="ChatClient.h" ex="false" tool="3" flavor2="0">
|
||||
</item>
|
||||
<item path="main.cpp" ex="false" tool="1" flavor2="0">
|
||||
</item>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
@@ -0,0 +1 @@
|
||||
# Automatic path mapper. CRC = 1
|
||||
@@ -0,0 +1 @@
|
||||
gmake: *** No targets. Stop.
|
||||
@@ -0,0 +1 @@
|
||||
C:/Users/Corwin Perren/Documents/GitHub/CS372/Project 1/chatclient/chatclient.cpp=C:/Users/Corwin Perren/Documents/GitHub/CS372/Project 1/chatclient#chatclient.cpp -o chatclient
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||
*
|
||||
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||
* Other names may be trademarks of their respective owners.
|
||||
*
|
||||
* The contents of this file are subject to the terms of either the GNU
|
||||
* General Public License Version 2 only ("GPL") or the Common
|
||||
* Development and Distribution License("CDDL") (collectively, the
|
||||
* "License"). You may not use this file except in compliance with the
|
||||
* License. You can obtain a copy of the License at
|
||||
* http://www.netbeans.org/cddl-gplv2.html
|
||||
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
||||
* specific language governing permissions and limitations under the
|
||||
* License. When distributing the software, include this License Header
|
||||
* Notice in each file and include the License file at
|
||||
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the GPL Version 2 section of the License file that
|
||||
* accompanied this code. If applicable, add the following below the
|
||||
* License Header, with the fields enclosed by brackets [] replaced by
|
||||
* your own identifying information:
|
||||
* "Portions Copyrighted [year] [name of copyright owner]"
|
||||
*
|
||||
* If you wish your version of this file to be governed by only the CDDL
|
||||
* or only the GPL Version 2, indicate your decision by adding
|
||||
* "[Contributor] elects to include this software in this distribution
|
||||
* under the [CDDL or GPL Version 2] license." If you do not indicate a
|
||||
* single choice of license, a recipient has the option to distribute
|
||||
* your version of this file under either the CDDL, the GPL Version 2 or
|
||||
* to extend the choice of license to its licensees as provided above.
|
||||
* However, if you add GPL Version 2 code and therefore, elected the GPL
|
||||
* Version 2 license, then the option applies only if the new code is
|
||||
* made subject to such option by the copyright holder.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
// List of standard headers was taken in http://en.cppreference.com/w/c/header
|
||||
|
||||
#include <assert.h> // Conditionally compiled macro that compares its argument to zero
|
||||
#include <ctype.h> // Functions to determine the type contained in character data
|
||||
#include <errno.h> // Macros reporting error conditions
|
||||
#include <float.h> // Limits of float types
|
||||
#include <limits.h> // Sizes of basic types
|
||||
#include <locale.h> // Localization utilities
|
||||
#include <math.h> // Common mathematics functions
|
||||
#include <setjmp.h> // Nonlocal jumps
|
||||
#include <signal.h> // Signal handling
|
||||
#include <stdarg.h> // Variable arguments
|
||||
#include <stddef.h> // Common macro definitions
|
||||
#include <stdio.h> // Input/output
|
||||
#include <string.h> // String handling
|
||||
#include <stdlib.h> // General utilities: memory management, program utilities, string conversions, random numbers
|
||||
#include <time.h> // Time/date utilities
|
||||
#include <iso646.h> // (since C95) Alternative operator spellings
|
||||
#include <wchar.h> // (since C95) Extended multibyte and wide character utilities
|
||||
#include <wctype.h> // (since C95) Wide character classification and mapping utilities
|
||||
#ifdef _STDC_C99
|
||||
#include <complex.h> // (since C99) Complex number arithmetic
|
||||
#include <fenv.h> // (since C99) Floating-point environment
|
||||
#include <inttypes.h> // (since C99) Format conversion of integer types
|
||||
#include <stdbool.h> // (since C99) Boolean type
|
||||
#include <stdint.h> // (since C99) Fixed-width integer types
|
||||
#include <tgmath.h> // (since C99) Type-generic math (macros wrapping math.h and complex.h)
|
||||
#endif
|
||||
#ifdef _STDC_C11
|
||||
#include <stdalign.h> // (since C11) alignas and alignof convenience macros
|
||||
#include <stdatomic.h> // (since C11) Atomic types
|
||||
#include <stdnoreturn.h> // (since C11) noreturn convenience macros
|
||||
#include <threads.h> // (since C11) Thread library
|
||||
#include <uchar.h> // (since C11) UTF-16 and UTF-32 character utilities
|
||||
#endif
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configurationDescriptor version="100">
|
||||
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
|
||||
<df root="." name="0">
|
||||
<in>ChatClient.cpp</in>
|
||||
<in>ChatClient.h</in>
|
||||
<in>main.cpp</in>
|
||||
</df>
|
||||
</logicalFolder>
|
||||
<projectmakefile>Makefile</projectmakefile>
|
||||
<confs>
|
||||
<conf name="Default" type="0">
|
||||
<toolsSet>
|
||||
<developmentServer>perrenc@flip2.engr.oregonstate.edu:22</developmentServer>
|
||||
<platform>2</platform>
|
||||
</toolsSet>
|
||||
<compile>
|
||||
<compiledirpicklist>
|
||||
<compiledirpicklistitem>.</compiledirpicklistitem>
|
||||
<compiledirpicklistitem>${AUTO_FOLDER}</compiledirpicklistitem>
|
||||
</compiledirpicklist>
|
||||
<compiledir>${AUTO_FOLDER}</compiledir>
|
||||
<compilecommandpicklist>
|
||||
<compilecommandpicklistitem>${MAKE} ${ITEM_NAME}.o</compilecommandpicklistitem>
|
||||
<compilecommandpicklistitem>${AUTO_COMPILE}</compilecommandpicklistitem>
|
||||
</compilecommandpicklist>
|
||||
<compilecommand>${AUTO_COMPILE}</compilecommand>
|
||||
</compile>
|
||||
<dbx_gdbdebugger version="1">
|
||||
<gdb_pathmaps>
|
||||
</gdb_pathmaps>
|
||||
<gdb_interceptlist>
|
||||
<gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
|
||||
</gdb_interceptlist>
|
||||
<gdb_options>
|
||||
<DebugOptions>
|
||||
</DebugOptions>
|
||||
</gdb_options>
|
||||
<gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
|
||||
</dbx_gdbdebugger>
|
||||
<nativedebugger version="1">
|
||||
<engine>gdb</engine>
|
||||
</nativedebugger>
|
||||
<runprofile version="9">
|
||||
<runcommandpicklist>
|
||||
<runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
|
||||
</runcommandpicklist>
|
||||
<runcommand>"${OUTPUT_PATH}"</runcommand>
|
||||
<rundir>.</rundir>
|
||||
<buildfirst>false</buildfirst>
|
||||
<terminal-type>0</terminal-type>
|
||||
<remove-instrumentation>0</remove-instrumentation>
|
||||
<environment>
|
||||
</environment>
|
||||
</runprofile>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||
*
|
||||
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||
* Other names may be trademarks of their respective owners.
|
||||
*
|
||||
* The contents of this file are subject to the terms of either the GNU
|
||||
* General Public License Version 2 only ("GPL") or the Common
|
||||
* Development and Distribution License("CDDL") (collectively, the
|
||||
* "License"). You may not use this file except in compliance with the
|
||||
* License. You can obtain a copy of the License at
|
||||
* http://www.netbeans.org/cddl-gplv2.html
|
||||
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
||||
* specific language governing permissions and limitations under the
|
||||
* License. When distributing the software, include this License Header
|
||||
* Notice in each file and include the License file at
|
||||
* nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the GPL Version 2 section of the License file that
|
||||
* accompanied this code. If applicable, add the following below the
|
||||
* License Header, with the fields enclosed by brackets [] replaced by
|
||||
* your own identifying information:
|
||||
* "Portions Copyrighted [year] [name of copyright owner]"
|
||||
*
|
||||
* If you wish your version of this file to be governed by only the CDDL
|
||||
* or only the GPL Version 2, indicate your decision by adding
|
||||
* "[Contributor] elects to include this software in this distribution
|
||||
* under the [CDDL or GPL Version 2] license." If you do not indicate a
|
||||
* single choice of license, a recipient has the option to distribute
|
||||
* your version of this file under either the CDDL, the GPL Version 2 or
|
||||
* to extend the choice of license to its licensees as provided above.
|
||||
* However, if you add GPL Version 2 code and therefore, elected the GPL
|
||||
* Version 2 license, then the option applies only if the new code is
|
||||
* made subject to such option by the copyright holder.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
// List of standard headers was taken in http://en.cppreference.com/w/cpp/header
|
||||
|
||||
#include <cstdlib> // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search
|
||||
#include <csignal> // Functions and macro constants for signal management
|
||||
#include <csetjmp> // Macro (and function) that saves (and jumps) to an execution context
|
||||
#include <cstdarg> // Handling of variable length argument lists
|
||||
#include <typeinfo> // Runtime type information utilities
|
||||
#include <bitset> // std::bitset class template
|
||||
#include <functional> // Function objects, designed for use with the standard algorithms
|
||||
#include <utility> // Various utility components
|
||||
#include <ctime> // C-style time/date utilites
|
||||
#include <cstddef> // typedefs for types such as size_t, NULL and others
|
||||
#include <new> // Low-level memory management utilities
|
||||
#include <memory> // Higher level memory management utilities
|
||||
#include <climits> // limits of integral types
|
||||
#include <cfloat> // limits of float types
|
||||
#include <limits> // standardized way to query properties of arithmetic types
|
||||
#include <exception> // Exception handling utilities
|
||||
#include <stdexcept> // Standard exception objects
|
||||
#include <cassert> // Conditionally compiled macro that compares its argument to zero
|
||||
#include <cerrno> // Macro containing the last error number
|
||||
#include <cctype> // functions to determine the type contained in character data
|
||||
#include <cwctype> // functions for determining the type of wide character data
|
||||
#include <cstring> // various narrow character string handling functions
|
||||
#include <cwchar> // various wide and multibyte string handling functions
|
||||
#include <string> // std::basic_string class template
|
||||
#include <vector> // std::vector container
|
||||
#include <deque> // std::deque container
|
||||
#include <list> // std::list container
|
||||
#include <set> // std::set and std::multiset associative containers
|
||||
#include <map> // std::map and std::multimap associative containers
|
||||
#include <stack> // std::stack container adaptor
|
||||
#include <queue> // std::queue and std::priority_queue container adaptors
|
||||
#include <algorithm> // Algorithms that operate on containers
|
||||
#include <iterator> // Container iterators
|
||||
#include <cmath> // Common mathematics functions
|
||||
#include <complex> // Complex number type
|
||||
#include <valarray> // Class for representing and manipulating arrays of values
|
||||
#include <numeric> // Numeric operations on values in containers
|
||||
#include <iosfwd> // forward declarations of all classes in the input/output library
|
||||
#include <ios> // std::ios_base class, std::basic_ios class template and several typedefs
|
||||
#include <istream> // std::basic_istream class template and several typedefs
|
||||
#include <ostream> // std::basic_ostream, std::basic_iostream class templates and several typedefs
|
||||
#include <iostream> // several standard stream objects
|
||||
#include <fstream> // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs
|
||||
#include <sstream> // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs
|
||||
#include <strstream> // std::strstream, std::istrstream, std::ostrstream(deprecated)
|
||||
#include <iomanip> // Helper functions to control the format or input and output
|
||||
#include <streambuf> // std::basic_streambuf class template
|
||||
#include <cstdio> // C-style input-output functions
|
||||
#include <locale> // Localization utilities
|
||||
#include <clocale> // C localization utilities
|
||||
#include <ciso646> // empty header. The macros that appear in iso646.h in C are keywords in C++
|
||||
#if __cplusplus >= 201103L
|
||||
#include <typeindex> // (since C++11) std::type_index
|
||||
#include <type_traits> // (since C++11) Compile-time type information
|
||||
#include <chrono> // (since C++11) C++ time utilites
|
||||
#include <initializer_list> // (since C++11) std::initializer_list class template
|
||||
#include <tuple> // (since C++11) std::tuple class template
|
||||
#include <scoped_allocator> // (since C++11) Nested allocator class
|
||||
#include <cstdint> // (since C++11) fixed-size types and limits of other types
|
||||
#include <cinttypes> // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions
|
||||
#include <system_error> // (since C++11) defines std::error_code, a platform-dependent error code
|
||||
#include <cuchar> // (since C++11) C-style Unicode character conversion functions
|
||||
#include <array> // (since C++11) std::array container
|
||||
#include <forward_list> // (since C++11) std::forward_list container
|
||||
#include <unordered_set> // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers
|
||||
#include <unordered_map> // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers
|
||||
#include <random> // (since C++11) Random number generators and distributions
|
||||
#include <ratio> // (since C++11) Compile-time rational arithmetic
|
||||
#include <cfenv> // (since C++11) Floating-point environment access functions
|
||||
#include <codecvt> // (since C++11) Unicode conversion facilities
|
||||
#include <regex> // (since C++11) Classes, algorithms and iterators to support regular expression processing
|
||||
#include <atomic> // (since C++11) Atomic operations library
|
||||
#include <ccomplex> // (since C++11)(deprecated in C++17) simply includes the header <complex>
|
||||
#include <ctgmath> // (since C++11)(deprecated in C++17) simply includes the headers <ccomplex> (until C++17)<complex> (since C++17) and <cmath>: the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers
|
||||
#include <cstdalign> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
|
||||
#include <cstdbool> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
|
||||
#include <thread> // (since C++11) std::thread class and supporting functions
|
||||
#include <mutex> // (since C++11) mutual exclusion primitives
|
||||
#include <future> // (since C++11) primitives for asynchronous computations
|
||||
#include <condition_variable> // (since C++11) thread waiting conditions
|
||||
#endif
|
||||
#if __cplusplus >= 201300L
|
||||
#include <shared_mutex> // (since C++14) shared mutual exclusion primitives
|
||||
#endif
|
||||
#if __cplusplus >= 201500L
|
||||
#include <any> // (since C++17) std::any class template
|
||||
#include <optional> // (since C++17) std::optional class template
|
||||
#include <variant> // (since C++17) std::variant class template
|
||||
#include <memory_resource> // (since C++17) Polymorphic allocators and memory resources
|
||||
#include <string_view> // (since C++17) std::basic_string_view class template
|
||||
#include <execution> // (since C++17) Predefined execution policies for parallel versions of the algorithms
|
||||
#include <filesystem> // (since C++17) std::path class and supporting functions
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
# Launchers File syntax:
|
||||
#
|
||||
# [Must-have property line]
|
||||
# launcher1.runCommand=<Run Command>
|
||||
# [Optional extra properties]
|
||||
# launcher1.displayName=<Display Name, runCommand by default>
|
||||
# launcher1.hide=<true if lancher is not visible in menu, false by default>
|
||||
# launcher1.buildCommand=<Build Command, Build Command specified in project properties by default>
|
||||
# launcher1.runDir=<Run Directory, ${PROJECT_DIR} by default>
|
||||
# launcher1.runInOwnTab=<false if launcher reuse common "Run" output tab, true by default>
|
||||
# launcher1.symbolFiles=<Symbol Files loaded by debugger, ${OUTPUT_PATH} by default>
|
||||
# launcher1.env.<Environment variable KEY>=<Environment variable VALUE>
|
||||
# (If this value is quoted with ` it is handled as a native command which execution result will become the value)
|
||||
# [Common launcher properties]
|
||||
# common.runDir=<Run Directory>
|
||||
# (This value is overwritten by a launcher specific runDir value if the latter exists)
|
||||
# common.env.<Environment variable KEY>=<Environment variable VALUE>
|
||||
# (Environment variables from common launcher are merged with launcher specific variables)
|
||||
# common.symbolFiles=<Symbol Files loaded by debugger>
|
||||
# (This value is overwritten by a launcher specific symbolFiles value if the latter exists)
|
||||
#
|
||||
# In runDir, symbolFiles and env fields you can use these macroses:
|
||||
# ${PROJECT_DIR} - project directory absolute path
|
||||
# ${OUTPUT_PATH} - linker output path (relative to project directory path)
|
||||
# ${OUTPUT_BASENAME}- linker output filename
|
||||
# ${TESTDIR} - test files directory (relative to project directory path)
|
||||
# ${OBJECTDIR} - object files directory (relative to project directory path)
|
||||
# ${CND_DISTDIR} - distribution directory (relative to project directory path)
|
||||
# ${CND_BUILDDIR} - build directory (relative to project directory path)
|
||||
# ${CND_PLATFORM} - platform name
|
||||
# ${CND_CONF} - configuration name
|
||||
# ${CND_DLIB_EXT} - dynamic library extension
|
||||
#
|
||||
# All the project launchers must be listed in the file!
|
||||
#
|
||||
# launcher1.runCommand=...
|
||||
# launcher2.runCommand=...
|
||||
# ...
|
||||
# common.runDir=...
|
||||
# common.env.KEY=VALUE
|
||||
|
||||
# launcher1.runCommand=<type your run command here>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<code-assistance-data xmlns="http://www.netbeans.org/ns/make-project-private/1">
|
||||
<code-model-enabled>true</code-model-enabled>
|
||||
</code-assistance-data>
|
||||
<data xmlns="http://www.netbeans.org/ns/make-project-private/1">
|
||||
<activeConfTypeElem>0</activeConfTypeElem>
|
||||
<activeConfIndexElem>0</activeConfIndexElem>
|
||||
</data>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group>
|
||||
<file>file:/C:/Users/Corwin%20Perren/Documents/GitHub/CS372/Project%201/chatclient/Makefile</file>
|
||||
<file>file:/C:/Users/Corwin%20Perren/Documents/GitHub/CS372/Project%201/chatclient/main.cpp</file>
|
||||
<file>file:/C:/Users/Corwin%20Perren/Documents/GitHub/CS372/Project%201/chatclient/ChatClient.cpp</file>
|
||||
<file>file:/C:/Users/Corwin%20Perren/Documents/GitHub/CS372/Project%201/chatclient/ChatClient.h</file>
|
||||
</group>
|
||||
</open-files>
|
||||
</project-private>
|
||||
@@ -0,0 +1,7 @@
|
||||
#Sat Feb 11 19:58:28 PST 2017
|
||||
c\:\\users\\corwin\ perren\\documents\\github\\cs372\\project\ 1\\chatclient\\nbproject\\project.xml=c1486869276305
|
||||
c\:\\users\\corwin\ perren\\documents\\github\\cs372\\project\ 1\\chatclient\\chatclient.h=c1486871212917
|
||||
c\:\\users\\corwin\ perren\\documents\\github\\cs372\\project\ 1\\chatclient\\makefile=c1486861630590
|
||||
VERSION=1.3
|
||||
c\:\\users\\corwin\ perren\\documents\\github\\cs372\\project\ 1\\chatclient\\chatclient.cpp=c1486871902016
|
||||
c\:\\users\\corwin\ perren\\documents\\github\\cs372\\project\ 1\\chatclient\\main.cpp=c1486871294940
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.cnd.makeproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/make-project/1">
|
||||
<name>chatclient</name>
|
||||
<c-extensions/>
|
||||
<cpp-extensions>cpp</cpp-extensions>
|
||||
<header-extensions>h</header-extensions>
|
||||
<sourceEncoding>UTF-8</sourceEncoding>
|
||||
<make-dep-projects/>
|
||||
<sourceRootList>
|
||||
<sourceRootElem>.</sourceRootElem>
|
||||
</sourceRootList>
|
||||
<confList>
|
||||
<confElem>
|
||||
<name>Default</name>
|
||||
<type>0</type>
|
||||
</confElem>
|
||||
</confList>
|
||||
<formatting>
|
||||
<project-formatting-style>false</project-formatting-style>
|
||||
</formatting>
|
||||
</data>
|
||||
<spellchecker-wordlist xmlns="http://www.netbeans.org/ns/spellchecker-wordlist/1">
|
||||
<word>chatclient</word>
|
||||
<word>Corwin</word>
|
||||
<word>hostname</word>
|
||||
<word>Namespace</word>
|
||||
<word>Perren</word>
|
||||
<word>uit</word>
|
||||
</spellchecker-wordlist>
|
||||
</configuration>
|
||||
</project>
|
||||
Reference in New Issue
Block a user