예제 #1
0
static void* recvDataLoop(void *arg)
{
	StreamSocket *ss =(StreamSocket *)arg;

	if(NULL == ss)
	{
		cerr << "recvDataLoop arg is NULL"<<__LINE__<<endl;
		return NULL;
	}
	cout <<"###@@@enter recvDataLoop@@@@### ip:"<< ss->getRemoteIP()<<":"<< ss->getRemotePort()<<endl;
	StreamSocket sock = StreamSocket(ss->getRemoteSocket(), ss->getRemoteIP(), ss->getRemotePort());

    char buff[RECV_BUFFSIZE];
    int len;

    while(1)
    {
    	len = sock.receive(sock.getRemoteSocket(), buff, sizeof(buff), 45);
    	if(len > 0)
    	{
    		  if(-1 == streamSocketCommandProcess(sock, buff))
				{
					cout<<"\n nsStreamSocketCommandProcess send fail!:"<<endl;
//					break;
				}
    	}
    }

    cerr<<"\n###########@@@@@@@@@ exit @@@@@@@@############### \n";
    sock.close(sock.getRemoteSocket());
    return NULL;
}
예제 #2
0
static int streamSocketCommandProcess(StreamSocket &ssocket, char *command)
{
	if('\0' == command[0]) //?????????
	{
		return 0xff;
	}

	StreamPrivatePacket spp;
	vector<char *> strvec = spp.parse(command, STREAM_PACKET_SPLIT);

	if(strvec.size() <= 0)
	{
		cerr<<"streamSocketCommandProcess strvec.size() <= 0" <<endl;
		return 0xfe;
	}

	int ret = 0;
	string response;

    switch(atoi(strvec[0]))
    {
        case EN_CMD_ISONLINE:
        	response=strvec[0];
        	response += ">>";
        	response += ONLINE;
        	cout << response << endl;
        	//ret = ssocket.send(ssocket.getRemoteSocket(), response);
            break;
        case EN_CMD_MEDIA_PLAY:
        	cout << "EN_CMD_MEDIA_PLAY"<< endl;
        	break;
        case EN_CMD_KEY:
        	cout << "EN_CMD_KEY"<< endl;
        	//deal with key
        	break;
        case EN_CMD_MUSE:
        {
        	cout << "EN_CMD_MUSE"<< endl;
        	//deal with mouse
        }
        	break;
        case EN_CMD_INPUTSTR:
        	cout << "EN_CMD_INPUTSTR"<< endl;
        	break;
        default:
        	 cout<<"address is" << ssocket.getRemoteIP();
        	 cout<<":" << ssocket.getRemotePort()<< endl;
        	 cout <<"command  *" <<command << endl;
        	 cout<< strvec.size()<<"@  " << strvec[0]<< endl;
            break;
    }

    return ret;
}