windows开发环境下C++编写UDP传送字符串消息

身边一非码农同事要实现这个功能,我从github上引用相关源码简单封装了一下,留帖以备后用。

应为写在一个函数里面,所以mode用来区分S和C,服务器端调用该函数需要新启用一个线程。

这个头文件,环境为VS,控制台程序即可。

#include "stdafx.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <winsock2.h>
#include <string>
#pragma comment(lib, "ws2_32.lib")

using namespace std;

int cal(int mode/*0-server, 1-client*/,string ipAndPort/*server: port, client: ip:port */, string msg="") {
	// parse mode and from argv
	int error = 0;//syntax error
	//parse ipaddr and port from argv
	char* port = NULL;
	unsigned long ipaddr = INADDR_ANY;
	if (mode) {
		ipaddr = inet_addr(strtok_s((char*)(ipAndPort.c_str()), ":", &port));
	}
	else {
		port = (char*)(ipAndPort.c_str());
	}
	//init socket
	WSADATA wsaData;
	WORD socketVersion = MAKEWORD(2, 2);
	if (WSAStartup(socketVersion, &wsaData) != 0)
	{
		printf("socket error occured");
		return -1;
	}
	SOCKET msocket = socket(AF_INET, SOCK_DGR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值