用的是新太的平台,求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;
}
#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;
}
楼主需要的是 IVR网关的接口通信协议;然后用socket编程。
关于socket,网上例子很多。