C++ Socket网络编程 简易客户端1.0版本搭建(二)

接上节 搭建网络通信客户端代码
(2) 用Socket API建立简易的TCP客户端

  1. 建立一个Socket
  2. 连接服务器 connect
  3. 接受服务器信息 recive
  4. 关闭 socket

废话不多说,与服务端类似,直接上代码。

SOCKET编程 可以在每一步都判断是否成功建立、连接或监听 从而提高代码的鲁棒性

#define WIN32_LEAN_AND_MEAN
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include<Windows.h>
#include<WinSock2.h>
#include<iostream>
#include<string>
using namespace std;
#pragma comment(lib,"ws2_32.lib") //windows socket2 32的lib库

int main()
{
	//启动 windows socket 2.x 环境
	WORD versionCode = MAKEWORD(2, 2);	//创建一个版本号 
	WSADATA data;
	WSAStartup(versionCode, &data);  //启动Socket网络API的函数


	//1. 建立一个Socket
	SOCKET _sock = socket(AF_INET, SOCK_STREAM, 0); //用于网络链接的ipv4的socket

	if (INVALID_SOCKET == _sock)	//SIocket 每一步都可以判断是否成功建立
	{
		cout << "ERROR: SOCKET 建立失败" << endl;
	}
	else
	{
		cout << "SUCCESS: SOCKET 建立成功" << endl;
	}

	//2. 连接服务器 connect
	sockaddr_in _sin = {};
	_sin.sin_family = AF_INET;
	_sin.sin_port = htons(4567); //host to net short
	_sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	
	if (SOCKET_ERROR == connect(_sock, (sockaddr*)&_sin, sizeof(sockaddr_in)))	//SIocket 每一步都可以判断是否成功建立
	{
		cout << "ERROR: SOCKET 连接失败" << endl;
	}
	else
	{
		cout << "SUCCESS: SOCKET 连接成功" << endl;
	}

	//3. 接受服务器信息 recv
	char recvBuf[256] = {};
	int nlen = recv(_sock, recvBuf, sizeof(recvBuf), 0); //返回值是接收数据的长度
	if (nlen > 0)
	{
		cout << recvBuf << endl;
	}
	else
	{
		cout << "ERROR: 数据传输失败..." << endl;
	}
	//4. 关闭 socket
	closesocket(_sock);
	// 清除Windows socket环境
	WSACleanup();
	return 0;
}

运行截图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/La745739773/article/details/89040639
今日推荐