NMMsg的SendBuffer函数发送的数据怎么接受?
OnMSG事件接受不到呀!
OnMSG事件接受不到呀!
解决方案 »
- 主程序 调用 dll 返回 record 出错
- 在ehlib的DBGridEh输入数据时,如何控制一定要先输入某栏位,才能输入另外一个栏位??
- 如何在MaskEdit中设置默认值?
- delphi做客户端访问oracle,如何解决多用户问题
- 关于“为CSDN喝彩”那个帖中没领到分的兄弟再来领分
- 在FORM的哪个参数里往DATAMOUDLE里的ADOQUERY传递参数?
- DELPHI小问题
- 求透明listview控件
- 不好意思,有没有哪位仁兄告诉我应该怎样把数据库中的某个数据显示在一个treeview中呢?
- 有什么工具可以检查内存没有释放
- 怎样能屏蔽掉SOCKET连接失败后出现的对话框,而使用户端窗体上的LABEL显示离线?
- 如何把窗体的形状变成任意形状,比如变成一个位图的形状
发送:
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop#include "MainFrm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;AnsiString FileExt;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Host = Edit1->Text;
StatusBar1->Panels->Items[0]->Text = "想要连接的服务器是:"+Edit1->Text;
ClientSocket1->Active = true;
if(OpenDialog1->Execute())
{
TFileStream *MyFStream;
MyFStream = new TFileStream(OpenDialog1->FileName, fmOpenRead);
try
{
//主机名
NMStrm1->Host = Edit1->Text;
//如果在一台机子上运行则远端地址为0.0.0.0
Edit2->Text = NMStrm1->RemoteIP;
Edit3->Text = NMStrm1->LocalIP;
NMStrm1->FromName = "NetMasters";
//发送文件
NMStrm1->PostIt(MyFStream); //取文件扩展名
FileExt = ExtractFileExt(OpenDialog1->FileName);
ClientSocket1->Socket->SendText(FileExt); ShowMessage("文件"+OpenDialog1->FileName+"发送成功!");
}
catch(...)
{
ShowMessage("文件"+OpenDialog1->FileName+"发送失败!");
}
MyFStream->Free();
}
}接收:
#include <vcl.h>
#pragma hdrstop#include "MainFrm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString ExtFile;
//---------------------------------------------------------------------------
//接收文件
void __fastcall TForm1::ReceiveFile(AnsiString FileName,TStream *strm)
{
TFileStream *MyFStream;
MyFStream = new TFileStream(FileName);
try
{
MyFStream->CopyFrom(strm, strm->Size);
ShowMessage("接收成功!");
}
catch(...)
{
ShowMessage("接收失败!");
}
MyFStream->Free();
}__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
ReceiveFile(ExtFile,strm);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
//Edit1->Clear();
ExtFile = Socket->ReceiveText();
//Edit1->Text = "请将文件保存为"+Socket->ReceiveText()+"文件";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(!ServerSocket1->Active)
{
ServerSocket1->Active = true;
}
StatusBar1->Panels->Items[0]->Text = "正在监听";
}
//---------------------------------------------------------------------------void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = "想与我连接的客户端是:"+Socket->RemoteAddress;
}
clientsocket1.socket.SendBuf(cf1^,count);读取:
count:=socket.ReceiveLength;
getmem(cf1,count);
socket.ReceiveBuf(cf1^,count);上面的cf1是pchar类型.