当前位置: 技术问答>linux和unix
echo的传输时间问题
来源: 互联网 发布时间:2017-01-02
本文导语: 最近在做ipv6下面的数据传输测试 自己弄了个程序,但是具体传输时间一直不知道怎么解决 这个是服务器端的 #include #include #include #include #include #include #include #include #include static int listen_fd = -1; vo...
最近在做ipv6下面的数据传输测试
自己弄了个程序,但是具体传输时间一直不知道怎么解决
这个是服务器端的
自己弄了个程序,但是具体传输时间一直不知道怎么解决
这个是服务器端的
#include
#include
#include
#include
#include
#include
#include
#include
#include
static int listen_fd = -1;
void exit_handler(int no)
{
close(listen_fd);
exit(0);
}
int main(int argc,char * argv[])
{
unsigned short port = 10002;
char buffer[1024000];
int len,i;
signal(SIGTERM,exit_handler);
signal(SIGINT,exit_handler);
/* ipv 6 地址 */
struct sockaddr_in6 server_addr;
struct sockaddr_in6 client_addr;
socklen_t sockaddr_len = sizeof(struct sockaddr_in6);
if(argc > 1)
port = (unsigned short)atoi(argv[1]);
/* 第一步:创建TCP 侦听SOCKET*/
listen_fd = socket(PF_INET6,SOCK_STREAM,0);
if(listen_fd == -1)
{
perror("socket");
}
/* 第二步:设置侦听端口 */
memset((void *)&server_addr,0,sizeof(server_addr));
server_addr.sin6_family = AF_INET6 ; /* ipv6 */
server_addr.sin6_port = htons(port);
server_addr.sin6_addr = in6addr_any;
if(bind(listen_fd,(struct sockaddr *)&server_addr,sockaddr_len)!=0)
{
perror("bind");
exit_handler(0);
}
/* 第三步:通知内核开始侦听 ,这里是非阻塞 */
if(listen(listen_fd,20)!= 0)
{
perror("listen");
exit_handler(0);
}
fprintf(stdout,"TCP echo server ,listen on %dn",port);
/* 第四步:开始用等待客户端的联接 */
while(1)
{
int new_fd ;
memset((void *)&client_addr,0,sizeof(client_addr));
sockaddr_len = sizeof(client_addr);
/* 没有客户端联接,将会这里阻塞*/
new_fd = accept(listen_fd,(struct sockaddr *)&client_addr,&sockaddr_len);
if(new_fd == -1)
continue;
fprintf(stdout,"client connect: ip %s,port %dn",inet_ntop(AF_INET6, (void *)&(client_addr.sin6_addr),buffer, sockaddr_len),ntohs(client_addr.sin6_port));
/* 做ECHO操作*/
len = recv(new_fd,buffer,sizeof(buffer),0);
if(len 1)
//port = (unsigned short)atoi(argv[1]);
Datasize =(unsigned short)atoi(argv[1]);
for(a=0;a 2)
strncpy(ip,argv[2],sizeof(ip)-1);
/* 第一步:创建TCP 侦听SOCKET*/
tcp_fd = socket(PF_INET6,SOCK_STREAM,0);
if(tcp_fd == -1)
{
perror("socket");
}
/* 第二步:可选操作bind,如果没有bind,TCP协议栈自动选一个端口 */
/* 第三步:联接服务器 */
memset((void *)&server_addr,0,sizeof(server_addr));
server_addr.sin6_family = AF_INET6 ; /* ipv4 */
server_addr.sin6_port = htons(port);
len =inet_pton(AF_INET6, ip, (void *)&(server_addr.sin6_addr));
printf("len=%dn",len);/* success = 1 */
#if 0
if(len != 0)
{
perror("inet_pton");
exit_handler(0);
}
#endif
fprintf(stdout,"connect TCP echo server %s:%dn",ip,(int)port);
if(connect(tcp_fd,(struct sockaddr *)&server_addr,sockaddr_len) != 0)
{
perror("connect");
exit_handler(0);
}
while(1)
{
//gettimeofday(&tv,NULL); //接受发送时间
/* if(fgets(buffer,sizeof(buffer)-1,stdin)== NULL)
{
perror("fgets");
continue;
}
if(strncmp(buffer,"exit",4) == 0)
{
send(tcp_fd,"exit",5,0);
exit_handler(0);
break;
}*/
len = strlen(buffer)+1;
gettimeofday(&tv,NULL); //接受发送时间
if((len = send(tcp_fd,buffer,len,0))
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。