Socket发送数据---winsock库和boost库

这篇博客介绍了在C++中使用Winsock库和Boost库进行TCP与UDP通信的方法。在Winsock库部分,提到了通过UDP和TCP的方式,并在实现过程中遇到的类型转换问题。而在Boost库部分,同样讨论了TCP通信。文章还详细解释了编译错误,如“不存在从‘std::vector<char, std::allocator>’到‘const char*’的适当转换函数”,以及如何使用`data()`或`&at(0)`来解决此类问题。最后,博主建议使用C++11或更高版本以获得更好的功能和支持。" 112048796,10539129,顺式作用元件:启动子与增强子解析,"['基因表达', '生物学', '遗传学', 'DNA结构', '转录调控']
摘要由CSDN通过智能技术生成

一个是通过winsock库提供的api实现,一个是boost库实现,两个方法都可以,因为项目是vc++6.0实现的,不支持boost库,只能使用winsock库,vc++6.0太老,局限性大。

通过Winsock库提供的API

通过UDP


#include<winsock2.h>
#include<vector>
#include<WS2tcpip.h>
#include<string>
#pragma comment(lib,"ws2_32.lib")
void CTestDlg::OnBnClickedButtonUdp()
{
   
	// TODO: 在此添加控件通知处理程序代码
	//方法4 使用udp
	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
	{
   
		printf("初始化winsock失败.\n");
		return;
	}
	SOCKET sock = ::socket(AF_INET, SOCK_DGRAM, 0);
	if (sock == INVALID_SOCKET)
	{
   
		printf("无法创建套接字.\n");
		WSACleanup();
		return;
	}
	sockaddr_in serverAddr;
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(8080);  // 设置目标端口号
	//serverAddr.sin_addr.s_addr = inet_addr("192.168.1.100");  // 设置目标IP地址
	inet_pton(AF_INET, "192.168.74.1", &(serverAddr.sin_addr)); // 设置目标IP地址

	//要发送的数据
	std::string sAllData = "IN;SC0,40,0,40;IP0,0,40,40;PL1,0;SP5;PU7996,0;PD0,1;\
							PD0,4000;PD0,4020;PD4489,4021;PD4541,4021;PD7996,4020;PD8000,4001;PD7997,0;PU;7997,0;\
							PL2,0;SP5;PU4054,4022;PD4454,4021;PF4514,4141,4574,4021;PD4774,4021;PUPD0,4040;PD0,8040;\
							PD8000,8040;PD7996,4041;PD7996,4020;PU4514,4141;0,4020;PD0,4040;PU;0,4040;PU;";

	std::vector<char> buffer(sAllData.begin(), sAllData.end());
	const char* data = buffer.data();
	int dataSize = strlen(data);
	int bytesSent = sendto(sock, data, dataSize, 0, (struct sockaddr*)&serverAddr, sizeof</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Minuw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值