用的是新太的平台,求JAVA网关代码!谢谢!以下是一个C++的版本,但不完全正确,更看不明白,有好心人给写好一段java代码吗?谢谢!#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <mysql/mysql.h>#define MY_PORT         7799void process_pack(char * buffer);int main(int argc ,char **argv) 

int listen_fd,accept_fd; 
struct sockaddr_in     client_addr; 
int n; 
  
if((listen_fd=socket(AF_INET,SOCK_STREAM,0))<0) 

        printf("Socket Error\n"); 
        exit(1); 

  
bzero(&client_addr,sizeof(struct sockaddr_in)); 
client_addr.sin_family=AF_INET; 
client_addr.sin_port=htons(MY_PORT); 
client_addr.sin_addr.s_addr=htonl(INADDR_ANY); 
n=1; 
setsockopt(listen_fd,SOL_SOCKET,SO_REUSEADDR,&n,sizeof(int)); 
if(bind(listen_fd,(struct sockaddr *)&client_addr,sizeof(client_addr))<0) 

        printf("Bind Error\n"); 
        exit(1); 

listen(listen_fd,5); 
while(1) 

printf("begin %d\n",getpid());
accept_fd=accept(listen_fd,NULL,NULL); 
if((accept_fd<0)){
// sleep(10000);
continue; 
} if((n=fork())==0) 

         char buffer[1024]; 
        close(listen_fd); 
         n=recv(accept_fd,buffer,1024,0); 
process_pack(buffer); 
send(accept_fd,buffer,strlen(buffer),0);
close(accept_fd); 
exit(1);

} else if(n<0){ 
         printf("Fork Error\n"); 
}
    close(accept_fd); 
wait();
   } 
} void process_pack(char * buffer){
    char number[20];
    char songid[5];
    char url[100];
    int id;
    int ret;
    divstring(buffer,1,number);
    divstring(buffer,2,songid);
    id=atoi(songid);
    printf("number:%s,songid:%s\n",number,songid);
    sprintf(url,"http://adcms.kongzhong.com/?mobile=");
    strncat(url,number,11);
    strcat(url,"&ring=");
    switch(id){
    case 10:
    strcat(url,"0008");
    break;
    case 11:
    strcat(url,"0029");
    break;
        case 12:
    strcat(url,"0030");
    break;
         case 13:
strcat(url,"0082");
    break;
         case 14:
strcat(url,"0001");
    break;
    case 20:
    strcat(url,"0002");
    break;
    case 21:
    strcat(url,"0003");
    break;
        case 22:
    strcat(url,"0014");
    break;
         case 23:
strcat(url,"0015");
    break;
         case 24:
strcat(url,"0006");
    break;
    case 30:
    strcat(url,"0019");
    break;
    case 31:
    strcat(url,"0027");
    break;
        case 32:
    strcat(url,"0073");
    break;
         case 33:
strcat(url,"0186");
    break;
         case 34:
strcat(url,"0187");
    break;
    case 40:
    strcat(url,"0004");
    break;
    case 41:
    strcat(url,"0018");
    break;
        case 42:
    strcat(url,"0074");
    break;
         case 43:
strcat(url,"0075");
    break;
    case 50:
    strcat(url,"0006");
    break;
    case 51:
    strcat(url,"0013");
    break;
        case 52:
    strcat(url,"0016");
    break;
         case 53:
strcat(url,"0025");
    break;
         case 54:
strcat(url,"0101");
    break;
         default:
    break;
    }
ret = get_web_file(url,"/temp.html");
printf("getweb return : %d\n",ret);
}
int divstring(char *in,int num,char *out){
    char *p = in;
char *q = NULL;
int i = 0;
while(i<num){
i++;
p = strstr(p,",");
if(p==NULL)
return 0;
p++;
};
q = strstr(p,",");
if(q == NULL){
strncpy(out,p,strlen(p));
out[strlen(p)] ='\0';
}else{
strncpy(out,p,q-p);
out[q-p] ='\0';
}
return 1;
}
int get_web_file(char *src, char *dest)
{
    pid_t pid;
   printf("url:%s\n",src);
    if((pid=fork()) < 0)
    {
        return -1;
    }
    //printf("url:%s\n",src);
    else if(pid == 0)
    {
        char output[100] = "";
        char input[100] = "";
        sprintf(output, "%s%s", "--output-document=", dest);
        strcpy(input, src);        if(execlp("wget", "wget", "--timestamping", "--quiet", output,"--tries=0", input, (char *)0))
        {
            return -1;
        }
    }
    return 0;
}

解决方案 »

  1.   

    都是一些类字符串操作 不过有些方法如bind都需要去查库
      

  2.   

    我公司用的中兴的IVR平台,俺只会写VXML脚本!
      

  3.   

    其实简单而言,就是一个socket连接,然后发数据给Server, 以及收到数据后怎么处理。
    楼主需要的是 IVR网关的接口通信协议;然后用socket编程。
    关于socket,网上例子很多。