1,317
社区成员
发帖
与我相关
我的任务
分享
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdTCPClient1->Port = 8000;
IdTCPClient1->Host = "127.0.0.1";
IdTCPClient1->Connect();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TMemoryStream * Strm = new TMemoryStream ();
userInfo aUser ;
_tcscpy(aUser.name,"张三") ;
_tcscpy(aUser.passWord,"123") ;
Strm->Write(&aUser,sizeof(userInfo));
Strm->Position = 0 ;
IdTCPClient1->IOHandler->Write(Strm);
delete Strm ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TMemoryStream * Strm = new TMemoryStream ();
userInfo aUser ;
_tcscpy(aUser.name,"张三") ;
_tcscpy(aUser.passWord,"123") ;
//TBytes buffer;
//buffer=RawToBytes(&aUser, sizeof(userInfo));
Strm->Write(&aUser,sizeof(userInfo));
Strm->Position = 0 ;
IdTCPClient1->Port = 8000;
IdTCPClient1->Host = "127.0.0.1";
IdTCPClient1->Connect();
IdTCPClient1->IOHandler->Write(Strm);
//IdTCPClient1->IOHandler->Write(buffer);
IdTCPClient1->Disconnect();
delete Strm ;
}
//
void __fastcall TForm2::IdTCPServer1Execute(TIdContext *AContext)
{
comuniContent aComuniContent ;
userInfo aUser;
pCInfo CInfo ;
TMemoryStream * Strm = new TMemoryStream ();
try
{
try
{
//这里直接转换成结构体了
AContext->Connection->IOHandler->ReadStream(Strm,sizeof(comuniContent));
Strm->Position = 0 ;
//
//注意 这个地方还原了结构体aComuniContent
//
Strm->ReadBuffer(&aComuniContent,sizeof(comuniContent));
//得到了结构体了
aUser = aComuniContent.user;
CInfo = aComuniContent.host ;
//其他的结构体类似 你自己去完成吧
Memo1->Lines->Add("唯一标识符:"+AnsiString(aComuniContent.SN));
Memo1->Lines->Add("用户名:"+AnsiString(aUser.name));
Memo1->Lines->Add("密码:"+AnsiString(aUser.passWord));
Memo1->Lines->Add("计算机名字:"+AnsiString(CInfo.pCName));
Memo1->Lines->Add("IP地址:"+AnsiString(CInfo.pCIP));
Memo1->Lines->Add("MAC地址:"+AnsiString(CInfo.nWMak));
Memo1->Lines->Add("端口号:"+AnsiString(CInfo.port));
}
catch (Exception &e)
{
Memo1->Lines->Add("读取登录信息异常");
}
}
__finally
{
delete Strm;
}
}
//---------------------------------------------------------------------------
又来了个问题了
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include <TCHAR.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "IdBaseComponent"
#pragma link "IdComponent"
#pragma link "IdContext"
#pragma link "IdCustomTCPServer"
#pragma link "IdTCPClient"
#pragma link "IdTCPConnection"
#pragma link "IdTCPServer"
#pragma resource "*.dfm"
TForm2 *Form2;
struct userInfo//用户
{
TCHAR name[16];
TCHAR passWord[16];
};
struct pCInfo//本机
{
TCHAR pCName[16];
TCHAR pCIP[25];
TCHAR nWMak[40];//网卡Mak
int port;
};
struct command//命令
{
TCHAR commandC;//用1个字符代表命令,查阅本文件中的Define表
TCHAR receiver1[16];//接受者,要执行接收的命令
TCHAR receiver2[16];//接受者,发送给某个客户端时使用
TCHAR word[200];//发送的谈话内容
};
struct comuniContent//发送的信息
{
TCHAR SN[8];//唯一标识符
userInfo user;
pCInfo host;
command aCommand;
};
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
IdTCPClient1->Port = 8000;
IdTCPClient1->Host = "127.0.0.1";
IdTCPClient1->Connect();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
TMemoryStream * Strm = new TMemoryStream();
userInfo aUser ;
_tcscpy(aUser.name,"张三") ;
_tcscpy(aUser.passWord,"123") ;
pCInfo aCInfo ;
_tcscpy(aCInfo.nWMak,"PC") ;
_tcscpy(aCInfo.pCIP,"192.168.0.88") ;
_tcscpy(aCInfo.nWMak,"888-666-888") ;
aCInfo.port = 8000;
command acommand;
acommand.commandC = 'D' ;
_tcscpy(acommand.receiver1,"AA") ;
_tcscpy(acommand.receiver2,"BB") ;
_tcscpy(acommand.word,"3860") ;
comuniContent aComuniContent ;
_tcscpy(aComuniContent.SN ,"001") ;
aComuniContent.user = aUser ;
aComuniContent.host = aCInfo ;
aComuniContent.aCommand = acommand ;
Strm->Write(&aComuniContent,sizeof(aComuniContent));
Strm->Position = 0 ;
IdTCPClient1->IOHandler->Write(Strm);
delete Strm ;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::IdTCPServer1Execute(TIdContext *AContext)
{
comuniContent aComuniContent ;
userInfo aUser;
pCInfo CInfo ;
TMemoryStream * Strm = new TMemoryStream ();
try
{
try
{
AContext->Connection->IOHandler->ReadStream(Strm,sizeof(comuniContent));
Strm->Position = 0 ;
Strm->ReadBuffer(&aComuniContent,sizeof(comuniContent));
aUser = aComuniContent.user;
CInfo = aComuniContent.host ;
//其他的结构体类似 你自己去完成吧
Memo1->Lines->Add("唯一标识符:"+AnsiString(aComuniContent.SN));
Memo1->Lines->Add("用户名:"+AnsiString(aUser.name));
Memo1->Lines->Add("密码:"+AnsiString(aUser.passWord));
Memo1->Lines->Add("计算机名字:"+AnsiString(CInfo.pCName));
Memo1->Lines->Add("IP地址:"+AnsiString(CInfo.pCIP));
Memo1->Lines->Add("MAC地址:"+AnsiString(CInfo.nWMak));
Memo1->Lines->Add("端口号:"+AnsiString(CInfo.port));
}
catch (Exception &e)
{
Memo1->Lines->Add("读取登录信息异常");
}
}
__finally
{
delete Strm;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormShow(TObject *Sender)
{
IdTCPServer1->DefaultPort = 8000;
IdTCPServer1->Active = true ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IdTCPClient1->Port = 8000;
IdTCPClient1->Host = "127.0.0.1";
IdTCPClient1->Connect();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TMemoryStream * Strm = new TMemoryStream ();
userInfo aUser ;
_tcscpy(aUser.name,"张三") ;
_tcscpy(aUser.passWord,"123") ;
Strm->Write(&aUser,sizeof(userInfo));
Strm->Position = 0 ;
TCHAR *ptr=(TCHAR *)(Strm->Memory);
IdTCPClient1->IOHandler->WriteLn(ptr,enUTF8);
delete Strm ;
}
void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
{
UnicodeString str;
str = AContext->Connection->IOHandler->ReadLn(enUTF8);
Memo1->Lines->Add(str) ;
}