1.说明
待编辑…
2.代码
test_server.h
#ifndef INCLUDE_TEST_SERVER_H
#define INCLUDE_TEST_SERVER_H
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <vector>
#include <winsock2.h>
#include <Ws2tcpip.h>
#pragma comment (lib, "ws2_32.lib")
#include <fstream>
#include <iostream>
#include <time.h>
using namespace std;
#define SIZE 60
#define FILENAME "setting.txt"
#define OUTPUTFILENAME "output.txt"
class testServer
{
public:
testServer(void);
~testServer(void);
bool loadSocketLib(void);
bool readSocketParam(std::string fileName);
bool listenClient(void);
bool disconnectListen(void);
bool receiveData(void);
bool outputDataProcessing(void);
bool writeFile(std::string outPutFileName);
protected:
SOCKET s_socket_fd;
SOCKET new_socket_fd;
std::string ipAddr;
uint16_t portNum;
char r_buf[SIZE];
std::string oustr;
};
#endif /*INCLUDE_TEST_SERVER_H*/
test_server.cpp
#include "test_server.h"
/*
* @brief Contructor
*/
testServer::testServer(void)
{
s_socket_fd = INVALID_SOCKET;
new_socket_fd = INVALID_SOCKET;
ipAddr = "";
portNum = 0;
memset(r_buf, 0, (size_t)SIZE);
oustr = "";
}
/*
* @brief Destructor
*/
testServer::~testServer(void) {
}
/*
* @brief Start SOCKET library
* @return[in] result (ture:success false:failure)
*/
bool testServer::loadSocketLib(void)
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
cout << "startSOCKETlib error : error = start Socket lib failure" << endl;
return false;
}
return true;
}
/*
* @brief read setting file(load socket param)
* @param [in] FileName
* @return[in] result (ture:success false:failure)
*/
bool testServer::readSocketParam(std::string FileName)
{
ifstream input(FileName.c_str());
std::string line;
std::vector<string> IPinfo;
if (!input)
{
ipAddr = "";
portNum = 0;
cout << "load file error : error = no such file" << endl;
return false;
}
else
{
input.seekg(std::ios::beg);
while (getline(input, line))
{
IPinfo.push_back(line);
}
if (IPinfo[0].empty()|| IPinfo[1].empty())
{
cout << "read parameter error : error = Parameter setting error" << endl;
return false;
}
ipAddr = IPinfo[0];
portNum = static_cast<uint16_t>(std::stol(IPinfo[1]));
if (portNum > 1023 && portNum < 65536)
{
cout << "[load IPaddrs]:" << ipAddr << endl;
cout << "[load portNum]:" << portNum << endl;
return true;
}
else
{
cout << "read parameter error : error = invalid port number" << endl;
ret