c++聊天室编程记录(Linux环境基于eclipse c++)
server类
server.h
#ifndef SERVER_SERVER_H_
#define SERVER_SERVER_H_
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <time.h>
#include <list>
#include <errno.h>
#include <pthread.h>
#include <sstream>
using namespace std;
void* handClient(void* arg);
void* announce(void* arg);
class Server {
public:
Server(const int& port);
~Server();
public:
void run();
friend void* handClient(void*);
private:
void forwardMsg(const char* msg, size_t length);
private:
int port;
int serverSock;
list<int>* clientsP;
};
static pthread_mutex_t printLocker = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t clientsLocker = PTHREAD_MUTEX_INITIALIZER;
struct ThdArg{
int sockClient;
sockaddr_in addr;
void* mainObj;
};
#endif /* SERVER_SERVER_H_ */
server.cpp
#include "Server.h"
Server::Server(const int& port) {
this->port = port;
this->clientsP = new list<int>;
}
Server::~Server() {
delete clientsP;
}
void Server::run() {
sockaddr_in addr;
if ((serverSock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) < 0) {
cout << "create socket error" << endl;