#include #include #include #include "../PICA_client.h" struct sockaddr_in a; struct PICA_conninfo *c; struct PICA_chaninfo *chn; int _outgoing_chnl=0; unsigned char buf[64*1024]; int accept_cb(unsigned int id) { printf("accept_cb: %u\n",id); return 1; } //получение сообщения. void newmsg_cb(unsigned int peer_id,char* msgbuf,unsigned int nb,int type) { memcpy(buf,msgbuf,nb); buf[nb]=0; printf(" %u: ",peer_id); puts(buf); } //получение подтверждения о доставке сообщения void msgok_cb(unsigned int peer_id) { puts("[V]"); } //создание канала с собеседником void channel_established_cb(unsigned int peer_id) { puts("channel_established_cb"); } void channel_failed_cb(unsigned int peer_id) { printf("Failed to create channel to %u\n",peer_id); chn=0; } //входящий запрос на создание канала от пользователя с номером caller_id //<state==PICA_CHANSTATE_ACTIVE) { unsigned int msglen; gets(buf); msglen=strlen(buf); ret=PICA_send_msg(chn,buf,msglen); if (ret!=PICA_OK) printf("PICA_send_msg ret=%i\n",ret); } } while(PICA_read(c,100000) == PICA_OK && PICA_write(c) == PICA_OK); /* puts("Enter peer_id to talk with or . for waiting incoming sessions:"); gets(buf); if (buf[0]=='.') { unsigned int br; ret=PICA_read_conn(c,accept_cb,&chn); if (ret==PICA_NEWCHAN) { puts("PICA_NEWCHAN!"); } else printf("read_conn error: ret=%i\n",ret); ret=PICA_read_msg(chn,buf,&br); switch(ret) { case PICA_MSGUTF8: printf("%u (%u bytes): ",c->id,br); puts(buf); break; case PICA_MSGOK: puts("[v]"); break; default: printf("PICA_read_msg ret=%i\n",ret); } } else { peer_id=atoi(buf); printf("Creating channel to %u...\n",peer_id); ret=PICA_create_channel(c,peer_id,&chn,1); if (ret==PICA_OK) { unsigned int msglen; puts("Channel established..."); gets(buf); msglen=strlen(buf); ret=PICA_send_msg(chn,buf,msglen); if (ret!=PICA_OK) printf("PICA_send_msg ret=%i\n",ret); } else printf("error: ret=%i\n",ret); } */ sleep(10); if (chn) { puts("--------"); PICA_close_channel(chn); } PICA_close_connection(c); return 0; }