c++ Builder!TClienSocket控件网络通讯
c++ Builder高手请进!!TClienSocket控件网络通讯
一个简单的程序:就是客户端向服务端发送一个结构体数据,但老是报错!程序如下:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct r
{
unsigned int ID;
unsigned int state;
unsigned int current[2];
};
r *rmes;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
m_sHostAddress="192.0.0.0";//服务器端口号
ClientSocket1->Active=false;
ClientSocket1->Address=m_sHostAddress;
ClientSocket1->Port=8888;
m_HasConnected=false;
}
//---------------------------------------
//---------------------------------------
void __fastcall TForm1::MenuConnectClick(TObject *Sender)//菜单点击链接
{
if(ClientSocket1->Active==false)
ClientSocket1->Open();
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
m_HasConnected=true;
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode=0;
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
rmes->ID=1;
rmes->state=0;
rmes->current[0]=100;
rmes->current[1]=20;
if(m_HasConnected)
{
ClientSocket1->Socket->SendBuf(&rmes,sizeof(rmes)) ;
}
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("连接断开");
m_HasConnected=false;
}
//---------------------------------------
void __fastcall TForm1::MenudisconnectClick(TObject *Sender)
{
m_HasConnected=false;
ClientSocket1->Close();
}
//---------------------------------------
报错:
Project Project1.exe raised exception class EOSError with message‘System Error.Code1410’类别已存在。Process stopped.
不明白为什么?
------解决方案--------------------
首先设置好的IP地址
代码中有一个错误
一个简单的程序:就是客户端向服务端发送一个结构体数据,但老是报错!程序如下:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct r
{
unsigned int ID;
unsigned int state;
unsigned int current[2];
};
r *rmes;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
m_sHostAddress="192.0.0.0";//服务器端口号
ClientSocket1->Active=false;
ClientSocket1->Address=m_sHostAddress;
ClientSocket1->Port=8888;
m_HasConnected=false;
}
//---------------------------------------
//---------------------------------------
void __fastcall TForm1::MenuConnectClick(TObject *Sender)//菜单点击链接
{
if(ClientSocket1->Active==false)
ClientSocket1->Open();
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
m_HasConnected=true;
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode=0;
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
rmes->ID=1;
rmes->state=0;
rmes->current[0]=100;
rmes->current[1]=20;
if(m_HasConnected)
{
ClientSocket1->Socket->SendBuf(&rmes,sizeof(rmes)) ;
}
}
//---------------------------------------
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("连接断开");
m_HasConnected=false;
}
//---------------------------------------
void __fastcall TForm1::MenudisconnectClick(TObject *Sender)
{
m_HasConnected=false;
ClientSocket1->Close();
}
//---------------------------------------
报错:
Project Project1.exe raised exception class EOSError with message‘System Error.Code1410’类别已存在。Process stopped.
不明白为什么?
------解决方案--------------------
首先设置好的IP地址
代码中有一个错误
- C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender) { rmes = new r; //添加 动态分配空间 rmes->ID=1; rmes->state=0; rmes->current[0]=100; rmes->current[1]=20; if(m_HasConnected) { ClientSocket1->Socket->SendBuf(&rmes,sizeof(rmes)) ; } }
------解决方案--------------------
先清理一下旧工程遗留的文件,如工程目录中的.obj文件 .tds文件等,重新Build一下。