C++socket相关API

socket有关函数介绍
WSADATA data;
	/// <summary>
	/// 激活socket库
	/// 参数一:2个字节的WORD(ushort),低字节表示主版本号,高字节表示所需WinSock实现的最低版本
	/// 参数二:函数填入被激活的socket库信息,如实现的版本
	/// </summary>
	/// <returns>0:正常  其他:错误原因</returns>
	int err = WSAStartup(MAKEWORD(2, 2), &data);
	if (err != 0)
	{
		std::cout << "初始化失败";
		return 0;
	}

	/// <summary>
	/// 创建一个socket
	/// 参数一:协议族,指socket使用的网络协议  AF_INET(IPv4) AF_INET6(IPv6)
	/// 参数二:数据传输形式  SOCK_STREAM(有序可靠的分段流) SOCK_DGRAM(离散报文)
	/// 参数三:传输协议 IPPROTO_TCP(tcp)  IPPROTO_UDP(udp) 0(根据数据形式(参数二)指定合适协议)
	/// </summary>	 
	SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	/// <summary>
	/// 返回此线程中最近一次的错误代码
	/// socket函数如果出现错误就会返回-1,windows中使用宏SOCKET_ERROR代替
	/// 但是一个-1不能获得准确的错误信息,所以使用此函数
	/// 此函数只获得最近的错误,如果发生一个错误后可能会连环造成其他错误发生
	/// 就无法获得源头错误,因此应当在socket函数返回-1时就立即调用此函数
	/// </summary>
	WSAGetLastError();

	/// <summary>
	/// 停止传输消息,用于tcp连接的断开前使用
	/// 参数二:SD_SEND(停止发送消息,并会发送出一个FIN)  SD_RECEIVE(停止接受消息)  SD_BOTH(都停止)
	/// </summary>
	shutdown(sock, SD_BOTH);

	//关闭socket
	closesocket(sock);

	//关闭socket库,释放资源(会结束所有socket的操作,确保socket都关闭或未使用)
	//WSAStartup()激活时采用的引用计数,即可多次激活,所以关闭的次数必须与激活次数一致
	WSACleanup();

WSAGetLastError获得的都是异常的编号,可以在这篇博客 查看编号对应的错误详细信息

socket地址有关函数
//socket地址
sockaddr add;
add.sa_family;//地址类型,应该与socket创建时的网络协议一致(ipv4,ipv6等)
add.sa_data;//存储真正地址

//地址初始化专业数据类型
//socketAPI建立时没有类和多态继承,所以在socket函数需要
//地址数据时必须手动把这
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值