⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipreg_test.c

📁 sip voip 平台测试工具
💻 C
字号:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <ctype.h>
#include <stdio.h>
#include <strings.h>
#include <unistd.h>
#include <netdb.h>
#include "sipreg.h"

#define port 5061
#define port_local 9991
#define maxdatasize 4096

int main(int argc,char *argv[])
{
int fd,numbytes,num_id;
int len,n,N;
int callida,username;
char string[1024],string4[1024],*ptr,*ptr1,*ptr4,*ptr5,string444[1024],*ptr444,*ptr555,*string1,string44[1024],string55[1024],string555[1024],string5[1024],*ptr44,*ptr55;
char buf[maxdatasize];
char buf1[maxdatasize];

struct hostent *he;
struct sockaddr_in server;
struct sockaddr_in local;
char var1[1300];
char var2[1000];
if (argc !=6)
{
printf("Sipreg Version 0.1\nusage:%s <server ip address> <local ip address>  <callid_original> <username> <reg times>\n",argv[0]);
exit(1);
}

if ((he=gethostbyname(argv[1]))==NULL)
{
printf("get server hostbyname() error\n");
exit(1);
}


if((fd=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
printf("socket() error\n");
}
callida=atoi(argv[3]);
//username=atoi(argv[4]);
N=atoi(argv[5]);
bzero(&server,sizeof(server));
bzero(&local,sizeof(local));
server.sin_family= AF_INET;
server.sin_port=htons(port);
local.sin_port=htons(port_local);
server.sin_addr=*((struct in_addr *)he->h_addr);
if(bind(fd,(struct sockaddr *)&local,sizeof(struct sockaddr))==-1)
{
        perror("bind error.");
        exit(1);
}
//printf("username is %i",username);

while(1)
{
_helen_:
n=1;
//callida=atoi(argv[3]);
username=atoi(argv[4]);
sleep(5);
while(n<=N)
{
n++;
stpcpy(var1,sip_reg(argv[1],argv[2],callida,username));
sendto(fd,var1,strlen(var1),0,(struct sockaddr *)&server,sizeof(struct sockaddr));
callida++;
username++;
sleep(1);
printf("send out message %s\n",var1);
/*len=sizeof(struct sockaddr);
if((numbytes=recvfrom(fd,buf,maxdatasize,0,(struct sockaddr *)&local,&len)) <0)
	{
	perror("recv error out of service\n");
	exit(1);
	}
buf[numbytes]='\0';
printf("server message:\n%s\n",buf);
strncpy(buf1,buf,20); get line from file 
		//fgets(str1, 256, f1);
    		
if((strstr(buf1,"INFO"))&&(strstr(buf1,"INFO"))!=NULL)
{
        ptr44=strstr(buf,"Via: ");

        printf("%s\n",buf);
        ptr55=strstr(ptr44,"\r\n");
        strncpy(string55,ptr44,ptr55 - ptr44);
        string55[ptr55-ptr44]='\0';
        ptr4=strstr(buf,"From: ");
        ptr5=strstr(ptr4,"\r\n");
        strncpy(string5,ptr4,ptr5 - ptr4);
        string5[ptr5-ptr4]='\0';
        ptr=strstr(buf,"To: ");
        ptr1=strstr(ptr,"\r\n");
       strncpy(string4,ptr,ptr1 - ptr);
       string4[ptr1-ptr]='\0';
       ptr444=strstr(buf,"CSeq: ");
       ptr555=strstr(ptr444,"\r\n");
       strncpy(string555,ptr444,ptr555 - ptr444);
       string555[ptr555-ptr444]='\0';
       
stpcpy(var2,ok_info(argv[1],argv[2],callida,string5,string4,string55,string555));
printf("send out ok_info  message:\n%s",var2);
sendto(fd,var2,strlen(var2),0,(struct sockaddr *)&server,sizeof(struct sockaddr));
*/
}
goto _helen_;
}
close(fd);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -