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

📄 pingkud.cpp

📁 基于UDP的服务器的程序,计算机网络程序
💻 CPP
字号:
#include<winsock2.h>
#include<iostream.h>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
	WSADATA wsaData;
	SOCKET s;
	SOCKADDR_IN ServerAddr;
	int alen,delay,error,Port=6000,timeout=1000;
	int *head;
	char buf[100],svraddr[100];
	WSAStartup(MAKEWORD(2,2),&wsaData);
	s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
	setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout, 
			sizeof(timeout));
	ServerAddr.sin_family=AF_INET;
	ServerAddr.sin_port=htons(Port);
	ServerAddr.sin_addr.s_addr=inet_addr("192.168.0.102");
	alen=sizeof(ServerAddr);
	while(1)
	{
		cin>>svraddr;
		ServerAddr.sin_addr.s_addr=inet_addr(svraddr);
		for(int i=0;i<4;i++)
		{
			head=(int *)buf;
			head[0]=GetTickCount();
			head[1]=i;
			sendto(s,buf,100,0,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr));
			if(recvfrom(s,buf,100,0,(SOCKADDR *)&ServerAddr,&alen)!=-1)
			{
				head=(int *)buf;
				if(head[1]==i)
				{
					delay=GetTickCount()-head[0];
					cout<<"Reply from "<<svraddr<<":time="<<delay<<"ms"<<endl;
				}
				else
					cout<<"Request time out."<<endl;
			}
			else
			{
				error=WSAGetLastError();
				if(error==10060)
					cout<<"Request time out."<<endl;
				else if(error==10054)
					cout<<"连接被关闭."<<endl;
				else
					cout<<WSAGetLastError()<<endl;
			}
		}
	}
	closesocket(s);
	WSACleanup();
}

⌨️ 快捷键说明

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