紧急!为什么在发送完信息关机后,开着的那台机器出现“Access violation at address 400E8274 in module 'vcl50.bpl',read of address 6b
机器A先打开此程序,本机再打开,打开后即向A发送一“准备打印”的信息,且让A播放一段音乐。为什么关闭本机时,A出现异常现象。请高手给出具体的回答!
void __fastcall TForm1::FileListenClick(TObject *Sender)
{
//FileListen->Checked = !FileListen->Checked ;
if (FileListen->Checked)
{
ClientSocket->Active = false;
ServerSocket->Active = true;
StatusBar1->Panels->Items[0]->Text = "正在监听...";
}
else
{
if (ServerSocket->Active)
ServerSocket->Active = false;
StatusBar1->Panels->Items[0]->Text = "监听断开";
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FileConnectClick(TObject *Sender)
{
if (ClientSocket->Active)
ClientSocket->Active = false ;
ClientSocket->Host = ip_or_name;
ClientSocket->Active = true;
FileListen->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExitClick(TObject *Sender)
{
/* ServerSocket->Close();
ClientSocket->Close(); */
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo_my_computerKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if( Key == VK_RETURN)
{
if (IsServer)
ServerSocket->Socket->Connections[0]->SendText(Memo_my_computer->
Lines->Strings[Memo_my_computer->Lines->Count - 1]);
else
ClientSocket->Socket->SendText(Memo_my_computer->Lines->
Strings[Memo_my_computer->Lines->Count - 1]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
curdir = GetCurrentDir();
TIniFile *pIniFile = new TIniFile(curdir + "\\net_send.ini");
wavname = curdir + "\\WELCOM98.WAV";
ip_or_name = (pIniFile->ReadString("ip_Or_Name", "ip_or_name", "")).Trim();
message = (pIniFile->ReadString("message", "message", "")).Trim();
always_open = (pIniFile->ReadString("always_open", "always_open", "")).Trim();
delete pIniFile;
FileListenClick(NULL);
FileConnectClick(NULL);
//Form1->WindowState = wsNormal ;
//Timer1->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text = "连接到: " + Socket->RemoteHost;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Disconnect1Click(TObject *Sender)
{
ClientSocket->Close();
FileListenClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo_other_computer->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocketClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo_other_computer->Lines->Add(Socket->ReceiveText());
MediaPlayer1->FileName = wavname;
MediaPlayer1->DeviceType = dtWaveAudio;
MediaPlayer1->Display = Memo_other_computer;
MediaPlayer1->Open();
MediaPlayer1->Play();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocketAccept(TObject *Sender,
TCustomWinSocket *Socket)
{
IsServer = true;
StatusBar1->Panels->Items[0]->Text = "连接到: " + Socket->RemoteAddress;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocketClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo_other_computer->Lines->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
//FileListenClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
try
{
Memo_other_computer->Lines->Add("错误地连接到: " + ip_or_name);
ErrorCode = 0;
}
catch(const Exception &e)
{
ShowMessage(AnsiString(e.ClassName()) + e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocketClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ServerSocket->Active = false;
FileListen->Checked = !FileListen->Checked;
FileListenClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::m_portClick(TObject *Sender)
{
if (InputQuery("通信的两台机器端口号必须一致", "请输入端口号(正整数): ", port)) //按了OK
if (port.Length() > 0 )
{
if (StrToIntDef(port, 0) == 0 )
{
Application->MessageBox("端口号必须输入正整数。", "错误", MB_ICONERROR);
m_portClick(NULL);
return;
}
ClientSocket->Port = port.ToInt();
ServerSocket->Port = port.ToInt();
}
//FileListenClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Timer1->Interval = 1000;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
counts++;
if (counts >= 2)
{
Timer1->Interval = 0;
/*if (always_open == "no")
Close(); */
}
else
{
if (IsServer)
ServerSocket->Socket->Connections[0]->SendText("");
else
ClientSocket->Socket->SendText(message);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocketClientError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
try
{
StatusBar1->Panels->Items[0]->Text = "对方退出...";
}
catch(Exception &e)
{
ShowMessage("error_in ServerSocketClientError");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
try
{}
catch(const Exception &e)
{
ShowMessage(AnsiString(e.ClassName()) + e.Message);
}
}