VC upd编程

记录一下
获得本机IP

	char hostname[128]; 
	gethostname(hostname,128); 
	struct hostent *pHost = gethostbyname(hostname); 
	for (int i = 0; pHost != NULL && pHost->h_addr_list[i] != NULL; i++) 
	{ 
		printf("%s\n",inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i])); 
		localIP += inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]);
	} 

	WSACleanup(); 

发送按钮处理函数

void CUdpDlg::OnOK() 
{
	// TODO: Add extra validation here
	CWnd* pWnd = GetDlgItem(IDC_EDIT1);
	CString msg,ip,port;
	pWnd->GetWindowText(msg);
	pWnd = GetDlgItem(IDC_EDIT2);
	pWnd->GetWindowText(ip);
	pWnd = GetDlgItem(IDC_EDIT3);
	pWnd->GetWindowText(port);
	
	Sendudp(msg.GetBuffer(0),ip.GetBuffer(0),atoi(port.GetBuffer(0)));

	
}

接收按钮处理函数

HANDLE hThread;
int recstart = 0;
SOCKET socketSrv;
void CUdpDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	LPDWORD ThreadID=0;
	if(!recstart)
	{
		hThread=CreateThread(NULL,0,
		   (LPTHREAD_START_ROUTINE)ReciveUdp,
			NULL,0,
			ThreadID);
			GetDlgItem(IDC_BUTTON1)->SetWindowText("停止");
			//GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
			recstart = 1;
	}
	else
	{
		TerminateThread(hThread,0);
		FreeConsole();
		closesocket(socketSrv);
		WSACleanup();
		GetDlgItem(IDC_BUTTON1)->SetWindowText("接收");
		recstart = 0;
		
	}
}

发送及接收函数

//-----------------------------------------------
void Sendudp(char *msg,char *ip,int port)
{
	/*
		socket编程三步骤
		1、创建套接字socket
		2、发送数据
		3、关闭套接字
	*/
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD( 2, 2 );

	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) 
	{
		/* Tell the user that we could not find a usable */
		/* WinSock DLL.                                  */
		return;
	}

	/* Confirm that the WinSock DLL supports 2.2.*/
	/* Note that if the DLL supports versions greater   */
	/* than 2.2 in addition to 2.2, it will still return */
	/* 2.2 in wVersion since that is the version we     */
	/* requested.                                       */

	if ( LOBYTE( wsaData.wVersion ) != 2 ||
		  HIBYTE( wsaData.wVersion ) != 2 ) 
	{
		/* Tell the user that we could not find a usable */
		/* WinSock DLL.                                  */
		WSACleanup( );
		return;
	}
	SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
	addrSrv.sin_family=AF_INET;
	addrSrv.sin_port=htons(port);
	sendto(sockClient,msg,
		strlen(msg)+1,0,
		(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
	closesocket(sockClient);
	WSACleanup();
}

void ReciveUdp()
{
/*
	1、创建socket
	2、将套接字绑定到一个本地地址和端口上bind
	3、等待接受数据receive from
	4、关闭套接字。
*/
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD( 2, 2 );

	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) {
	/* Tell the user that we could not find a usable */
	/* WinSock DLL.                                  */
		 return;
	}

	/* Confirm that the WinSock DLL supports 2.2.*/
	/* Note that if the DLL supports versions greater   */
	/* than 2.2 in addition to 2.2, it will still return */
	/* 2.2 in wVersion since that is the version we     */
	/* requested.                                       */

	if ( LOBYTE( wsaData.wVersion ) != 2 ||
		  HIBYTE( wsaData.wVersion ) != 2 ) {
	/* Tell the user that we could not find a usable */
	/* WinSock DLL.                                  */
		WSACleanup( );
		return;
	}
	//SOCKET socketSrv;
	socketSrv=socket(AF_INET,SOCK_DGRAM,0);
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
	addrSrv.sin_family=AF_INET;
	addrSrv.sin_port=htons(5000);
	bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
	SOCKADDR_IN addrClient;
	int len=sizeof(SOCKADDR);
	char recvBuf[1024];

	AllocConsole();		//打开控制台
	freopen("CONOUT$","w+t",stdout); 
	freopen("CONIN$","r+t",stdin); 
	while(1)
	{
		recvfrom(socketSrv,recvBuf,1024,0,(SOCKADDR*)&addrClient,&len);
		printf("%s\n",recvBuf);
	}
//	FreeConsole();
//	closesocket(socketSrv);
//	WSACleanup();
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UPD720201和UPD720202均为NEC生产的高速USB 3.0主控芯片。它们可以提供最大5 Gbps的传输速度,比USB 2.0快10倍。UPD720201和UPD720202都支持多种USB设备的连接,例如打印机、摄像头、鼠标、键盘、外部硬盘等。此外,UPD720201和UPD720202还支持电源管理模式,可以通过开启或关闭USB接口来节省电源。两者的不同之处在于,UPD720201采用PCI Express接口,适用于台式机和工作站等较大的设备,而UPD720202采用Mini PCI Express接口,适用于笔记本电脑等小型设备。总体而言,UPD720201和UPD720202具有高速传输、多设备连接、电源管理等优点,是现代电脑系统的重要组成部分。 ### 回答2: UPD720201和UPD720202都是NEC推出的USB 3.0主机控制器芯片,它们支持USB3.0 5Gbps的传输速率,在传输速度、电力管理、以及节能方面都有很好的表现。而UPD720202比UPD720201的主控芯片多了一些额外的特性,例如通过灵活的DMA接口提供更高的数据传输速率、支持USB PD(Power Delivery)以及通过软件升级来增强系统性能等等。同时,UPD720202还是第一个通过PCI-express2.0x1接口提供增强USB 3.0的外设芯片,将PCI Express 2.0与USB3.0的数据传输技术相结合,使得数据传输速度明显提高,适用于高速外设和存储。UPD720201和UPD720202都广泛应用于PC主板、Notebook主板、工业应用及其他计算机外设等,提供了高效、稳定的USB 3.0解决方案,为用户带来更好的使用体验。 ### 回答3: UPD720201和UPD720202都是Renesas电子公司生产的USB 3.0主机控制器芯片。它们都支持高速USB 3.0规范,可以提供更快的传输速度和更高的功率输出,比USB 2.0更快和更高效。这两个芯片之间的差异是UPD720201是PCIe接口,而UPD720202是USB 3.0接口。UPD720201的传输速率达到了5 Gbps,而UPD720202的传输速率相对较慢,只有每秒3 Gbps。 UPD720201还支持xHCI规范,使其与Windows 8兼容,并支持USB向前和向后兼容性,因此可以与USB 1.1和2.0设备配合使用。UPD720202还集成了ASMedia的ASMedia ASM1053智能桥接器技术,它可以提供更高效的数据传输和更好的兼容性。这些芯片的应用包括台式机、笔记本电脑、服务器和嵌入式系统等。总的来说,这些芯片可以大大加速数据传输,在短时间内完成大量工作,因此备受欢迎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值