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

📄 udpclient.cpp

📁 请认真阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。
💻 CPP
字号:
//////////////////////////////////////////////////////////
// UDPClient文件

#include<iostream.h>
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"WS2_32")
class CInitSock
{
public:
	CInitSock(BYTE minorVer=2,BYTE majorVer=2)
	{
		WSADATA wsaData;
		WORD sockVersion=MAKEWORD(minorVer,majorVer);
		if(::WSAStartup(sockVersion,&wsaData)!=0)
		{
			exit(0);
		}
		
	}
	~CInitSock()
	{
		::WSACleanup();
	}
	
};


CInitSock initSock;		// 初始化Winsock库

int main()
{
	// 创建套节字
	SOCKET s = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if(s == INVALID_SOCKET)
	{
		printf("Failed socket() %d \n", ::WSAGetLastError());
		return 0;
	}
	
	// 也可以在这里调用bind函数绑定一个本地地址
	// 否则系统将会自动安排
	
	// 填写远程地址信息
	sockaddr_in addr; 
	addr.sin_family = AF_INET;
	addr.sin_port = htons(4567);
	// 注意,这里要填写服务器程序所在机器的IP地址
	// 如果你的计算机没有联网,直接使用127.0.0.1即可
	addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.106");
	
	/*// 发送数据
	char szText[] = " TCP Server Demo! \r\n";
	::sendto(s, szText, strlen(szText), 0, (sockaddr*)&addr, sizeof(addr));*/
	char buff[1024];
	int nLen = sizeof(addr);
	while(TRUE)
	{
		bool flage = 0;
		char szText[1024] = "";// 
//		cin >> szText;
//		char out[] = "bye";
//		::sendto(s, szText, strlen(szText), 0, (sockaddr*)&addr, sizeof(addr));
		int nRecv = ::recvfrom(s, buff, 1024, 0, (sockaddr*)&addr, &nLen); 
		if(nRecv > 0)
		{
			buff[nRecv] = '\0';
/*			for(int i=0;i<=2;i++)
			{
				if(out[i]==buff[i])
				{
					flage = 1;
				}
				else
				{
					break;
				}
			}*/
			printf(" 接收到数据(%s):%s", ::inet_ntoa(addr.sin_addr), buff);
			cout<<endl;
//			if(flage==1)
			if(strcmp(szText,"bye")==0)
				return 0;
			cin >> szText;
		::sendto(s, szText, strlen(szText), 0, (sockaddr*)&addr, sizeof(addr));
		}
	}
	
	::closesocket(s);
	return 0;
}

⌨️ 快捷键说明

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