您的位置:首页 > 其它

UDP简单通讯

2015-08-11 10:34 363 查看
发送信息

#include <WinSock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")

using namespace std;

const short PORT = 8008;//发送信息的端口

int main()
{
	WSADATA wd;
	//socket初始化
	int a = WSAStartup(0x0202, &wd);
	//每一个socket函数都可能失败,每次都可以获取错误码
	SOCKET sc = socket(AF_INET,SOCK_DGRAM,0);
	if (INVALID_SOCKET == sc)
	{
		cout <<"Socket 套接字创建失败!"<<endl;
		cout <<"错误码:"<< WSAGetLastError() <<endl;
	}

	//struct sockaddr *
	sockaddr_in sa = {AF_INET, PORT};
	//发布自己的端口,将套接字和机器上的一定的端口关联起来
	int bi = bind(sc, (sockaddr*)&sa, sizeof(sa)); //sc:代表套接字, &sa:IP或端口地址
	if (SOCKET_ERROR == bi)
	{
		cout <<"bind绑定端口失败!"<<WSAGetLastError()<<endl;
	}

	sockaddr_in sb = {AF_INET,8009}; <strong>//接收信息端口</strong>
	sb.sin_addr.S_un.S_addr = inet_addr("192.168.0.102");//该函数将四段文字转换为一个整数,这里的IP地址可以换成自己的
	//向某一个端口发送数据

	char s[256];
	while (true)
	{
		printf("输入要发送的内容!\n");
		//cin >> s; //这里cin会将输入的空格过滤掉
<span style="white-space:pre">		</span>gets(s);    //使用gets()函数则不会出现这种问题
		sendto(sc, s, strlen(s), 0, (sockaddr*)&sb, sizeof(sb));
	}
	
	return 0;
}


接收信息

#include <WinSock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")

using namespace std;

const short PORT = 8009;//接收信息的端口

int main()
{
	WSADATA wd;
	//socket初始化
	int a = WSAStartup(0x0202, &wd);
	//每一个socket函数都可能失败,每次都可以获取错误码
	SOCKET sc = socket(AF_INET,SOCK_DGRAM,0);
	if (INVALID_SOCKET == sc)
	{
		cout <<"Socket 套接字创建失败!"<<endl;
		cout <<"错误码:"<< WSAGetLastError() <<endl;
	}

	//struct sockaddr *
	sockaddr_in sa = {AF_INET, PORT};
	//发布自己的端口,将套接字和机器上的一定的端口关联起来
	int bi = bind(sc, (sockaddr*)&sa, sizeof(sa)); //sc:代表套接字, &sa:IP或端口地址
	if (SOCKET_ERROR == bi)
	{
		cout<< "bind绑定端口失败!" << WSAGetLastError() <<endl;
	}

	int n;
	char s[256];
	while (true)
	{
	   n = recv(sc, s, sizeof(s), 0);
	   s
 = '\0';
	   printf("接收数据为:%s\n", s);
	}

	return 0;
}


测试结果:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: