UDP简单通讯

本文详细介绍了使用WinSock2库实现TCP/IP协议下发送和接收信息的过程,包括socket初始化、绑定端口、发送与接收数据的基本步骤。





发送信息


#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[n] = '\0';
	   printf("接收数据为:%s\n", s);
	}

	return 0;
}







测试结果:




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值