//本文描述了c++ builder和vs 平台的tcp socket 客户端 demo.
//调试通过
//2.main.cpp
//#include "pch.h"// vs 平台
#include <iostream>
#include "MySocketClient.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])//c++ builder ,vs 平台需更换成 int main()
{MySocketClient Client;
Client.MySend();
system("pause");
return 0;
}
//1.创建MySocketClient类
//MySocketClien.h
//---------------------------------------------------------------------------
#ifndef MySocketClientH
#define MySocketClientH
#include <winsock2.h>
//#include <stdlib.h>
#include <iostream>
#include <string>
//---------------------------------------------------------------------------
class MySocketClient
{public:
MySocketClient();
~MySocketClient();
public :
int Open() ;
int Close();
public :
bool Connected;
int MySend();
private:
WSADATA wsaData;
sockaddr_in sockAddr;
SOCKET sock;
void GetHighLowByte(const short data, unsigned char& HByte, unsigned char& LByte);
};
#endif
//--------------------------------------
//MySocketClient.cpp
//#include "pch.h"// vs 平台
//#pragma comment(lib,"ws2_32.lib")// vs 平台
//#pragma warning(disable:4996)// vs 平台
#include "MySocketClient.h"
MySocketClient::MySocketClient()
{Open();
}
MySocketClient::~MySocketClient()
{Close();
}
int MySocketClient::Close()
{closesocket(sock);
//终止使用 DLL
WSACleanup();
Connected=false;
return 0;
}
int MySocketClient::Open()
{ WSAStartup(MAKEWORD(2, 2), &wsaData);
//创建套接字
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(5000);
int ret=connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
if (ret==0)
{Connected=true;
}
return ret;
}
int MySocketClient::MySend()
{char str1[100]={0};
sprintf(str1,"%s" ,"Hello!");
// ofstream test("d:\\Test.txt");
// if (test.is_open())
// { test<<str1;
// test.close();
// }
int m=strlen(str1);
std::cout<<str1;
std::cout<<"\n"<<strlen(str1)<<std::endl;
send(sock, str1, strlen(str1), NULL);//-------------注意长度
char szBuffer[MAXBYTE] = { 0 };
// recv(sock, szBuffer, MAXBYTE, NULL);//接收,视情况
// std::cout<<szBuffer<<std::endl;//
std::cout<<strlen(szBuffer)<<std::endl;
}