小小聊天室

简介:

//============================================================================
// Name        : Serv.cpp
// Author      : archy
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"
#include "ace/INET_Addr.h"
#include "ace/Addr.h"
#include "pthread.h"
#include <map>

using namespace std;

std::map<int,ACE_SOCK_Stream *> clientMap;

void *process_client(void* peer)
{

    ACE_TCHAR buf[64] = {0};
    int length = 0;

    while((length = static_cast<ACE_SOCK_Stream *>(peer)->recv(buf,64)) != -1)
    {

        buf[length] = '\0';

        for(std::map<int,ACE_SOCK_Stream *>::iterator iter = clientMap.begin();
                iter != clientMap.end();
                    iter ++)
        {
            if(iter->second == peer)
            {
                continue;
            }
            iter->second->send_n(buf,length);
        }
        printf("recv string %s\n",buf[4]);
    }
    static_cast<ACE_SOCK_Stream *>(peer)->close();
    return 0;
}

int main()
{
    ACE_INET_Addr port_to_listen(50000,ACE_LOCALHOST);
    ACE_SOCK_Acceptor acceptor;
    ACE_INET_Addr peer_addr;

    if(-1 == acceptor.open(port_to_listen,1))
    {
        printf("error accept open\n");
        return -1;
    }

    ACE_SOCK_Stream *peer;

    while(true)
    {
        peer = new ACE_SOCK_Stream();
        if(-1 == acceptor.accept((*peer),&peer_addr))
        {
            printf("error acceptor accept\n");
            return -1;
        }
        else
        {
            pthread_t pid;
            ACE_TCHAR addr[64] = {0};
            peer_addr.addr_to_string(addr,64);
            printf("connection from %s\n",addr);
            pthread_create(&pid,0,process_client,static_cast<void *>(peer));
            clientMap[(int)peer_addr.get_port_number()] = peer;
        }
    }

    return 0;
}



//============================================================================
// Name        : Cli.cpp
// Author      : archy
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include "ace/INET_Addr.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"
#include "pthread.h"
using namespace std;

void* list_recv(void* peer)
{
    char buf[64] = {0};
    int length = 0;
    while((length = static_cast<ACE_SOCK_Stream *>(peer)->recv(buf,64)) != -1)
    {
        buf[length] = '\0';
        printf("rev string %s\n",buf);
    }
    return 0;
}

int main()
{
    ACE_INET_Addr ser_addr(50000,ACE_LOCALHOST);
    ACE_SOCK_Connector connector;
    ACE_SOCK_Stream *peer = new(std::nothrow) ACE_SOCK_Stream();
    if(peer == NULL)
    {
        return -1;
    }
    if(connector.connect(*peer,ser_addr) == -1)
    {
        cout <<" connect error! "<< endl;
        return -1;
    }


    char buf[64] = "start";
    pthread_t pid;
    pthread_create(&pid,0,list_recv,static_cast<void *>(peer));
    while(gets(buf))
    {
        if(strlen(buf) == 0)
        {
            continue;
        }
        (*peer).send_n(buf,strlen(buf));
        //peer.recv(buf,64);
    }
    peer->close();
    printf("rev string %s\n",buf);
    return 0;
}


相关文章
|
9月前
|
前端开发 JavaScript NoSQL
在线聊天室优化之私聊
在线聊天室优化之私聊
114 1
在线聊天室优化之私聊
uniapp 分享功能-分享给朋友群聊朋友圈效果(整理)
uniapp 分享功能-分享给朋友群聊朋友圈效果(整理)
|
小程序 Java 机器人
使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了
此程序在手再也不怕女朋友跟你闹了!!!!自从有了女朋友比如:早安、晚安之类的问候语可不能断,但是也难免有时候会忘记那么该咋么办呢?很简单写一个程序么,近日闲来无趣想着用Java写一个自动发送微信的小程序,实现定时给指定的好友发送指定的消息,这不就很Nice了?本文主要包括实现的思路、代码的实现、打包为jar快捷方式!
198 0
|
程序员
漫画|微信群聊的程序员们
群投票出的11种最典型群友 快来看看你的群友是哪种!!!
420 0
|
前端开发
「趣学前端」画饼充饥,送给我好友的瓶瓶罐罐
技术有趣的其中一面便是给身边的朋友,带去一些不一样的体验。包括但是不限于搞怪。一个简单又有趣的前端效果,跟朋友友好(beida)的互动一下。
94 1
|
Python
python实现微信发消息
python实现微信发消息
3257 1
仿QQ聊天室【方案】
仿QQ聊天室【方案】
181 0
|
小程序 程序员 开发者
屌丝与女神聊天,已读不回~socket简单小案例
屌丝与女神聊天,已读不回~socket简单小案例
131 0