- 论坛徽章:
- 0
|
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX_SIZE 1500//*40
#define SERV_PORT 8088
#define test test.dat
void connectUDP(int len,int sockfd,struct sockaddr *pservaddr,socklen_t servlen,long num)
{
char buf[MAX_SIZE];
// fd_set wrset;
// struct timeval tv;
// int rlen,wlen;
// int ret;
int i;
/********************************************
s:标识一个未连接套接口的描述字。
name:欲进行连接的端口名。(自己填充用于SOCKER连接的结构体)
namelen:名字长度。
********************************************/
if(connect(sockfd,(struct sockaddr *)pservaddr,servlen) == -1)//建立与一个端的连接
{
perror("connet error");
exit(1);
}
else
printf("connect server ok!\n");
memset(buf,'*',len);
for(i = 0;i;\n");
exit(1);
}
/******************************************************
struct sockaddr_in {
short int sin_family; // 指定类型 分别为AF——INET和PF——INET分别是地址和协议类型
unsigned short int sin_port; // 端口号
struct in_addr sin_addr; // Internet address
unsigned char sin_zero[8]; // Same size as struct sockaddr
};
******************************************************/
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family= AF_INET;
servaddr.sin_port = htons(SERV_PORT);//将一个无符号短整形数从网络字节顺序转换为主机字节顺序。
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)//将点分十进制(IP地址形式)转换成网络字符串网络地址
{
printf("[%s]is not a valid IPaddress\n",argv[1]);
exit(1);
}
fh = argv[2];
/*************************************************
af - 地址家族(通常使用:AF_INET)
type - socket的种类
SOCK_STREAM : 用于TCP协议
SOCK_DGRAM : 用于UDP协议
protocol - 所使用的协议
*************************************************/
sockfd =socket(AF_INET,SOCK_DGRAM,0);//用于生成socket(soket Descrīptor)
r = fcntl(sockfd, F_GETFL, 0);
fcntl(sockfd, F_SETFL, r & ~O_NONBLOCK);
num = atoi(argv[2]); //把字符串转换成整型数 发包数量
len = atoi(argv[3]); //把字符串转换成整型数 发包长度
printf("%d\n",len);
connectUDP(len,sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr),num);
fprintf(stderr,"ServerIP:\t%s\n",argv[1]);
/* if(stat(argv[2],&fsize) == -1)
perror("failed to get fiel statusi\n");
else
fprintf(stderr,"file name:\t%s\nfile size:\t%ldK\n",argv[2],fsize.st_size/1024);
*/ error2=sysinfo(&s_info);//获取系统总体的统计信息
time2 = s_info.uptime;
printf("tranfice file time =%fs\n",(time2-time1));
return 0;
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72457/showart_1736751.html |
|