#include<iostream>
#include<Windows.h>
using namespace std;

struct DataPack
{
	int age;
	char name[32];

};

int main()
{
	//初始化ws2_32.dll
	WORD ver = MAKEWORD(2, 2);
	WSADATA wsaData;
	WSAStartup(ver, &wsaData);//对应WSACleanup的调用
	//1.建立一个socket
	SOCKET _sock = ::socket(AF_INET, SOCK_STREAM, 0);
	//填充sockaddr_in结构
	sockaddr_in sin;
	sin.sin_family = AF_INET;
	sin.sin_port = htons(1234);
	sin.sin_addr.S_un.S_addr = inet_addr(\"172.20.22.25\");
	//2.connecd连接服务器
	int cont = connect(_sock, (sockaddr*)&sin, sizeof(sin));
	if (cont == SOCKET_ERROR)
	{
		cout << \"连接服务器失败\" << endl;
		WSACleanup();
		return 0;
	}
	else
	{
		cout << \"连接服务器成功\" << endl;
	}
	//3.手动输入命令
	while (true)
	{
		char Hc[128] = {};
		cout << \"请输入命令\" << endl;
		cin >> Hc;
		if (0 == strcmp(Hc, \"exit\"))   //Client自身处理命令
		{
			break;
		}
		else
		{
			//4.向服务端发送命令请求
			int FS=send(_sock, Hc, 128, 0);
			if (FS > 0)
			{
				cout << \"向服务端发送命令成功\" << endl;
			}
			else
			{
				cout << \"向服务端发送命令失败\" << endl;
			}
		}
		//5.recv接受信息
		char buff[256];
		int nRecv = ::recv(_sock, buff, 256, 0);
		if (nRecv > 0)
		{
			DataPack* dp=(DataPack*)buff;
			cout << \"年龄:\" <<dp->age<< endl;
			cout << \"姓名:\" << dp->name << endl;

		}
	}

	//6.关闭套接字
	closesocket(_sock);
	WSACleanup();
	cout << \"收到exit命令后,退出\" << endl;
	system(\"pause\");
	return 0;
}

 

收藏 打印