1000分求UDP多线程文件传输例子

inallweathers 2005-02-18 02:29:13
thx
mail:jqsh2000@163.com
收到发分
...全文
441 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xusimeng 2005-04-07
  • 打赏
  • 举报
回复
up!
Sephil 2005-04-06
  • 打赏
  • 举报
回复
http://www.2ccc.com/article.asp?articleid=2030
NetSpider9804040 2005-04-06
  • 打赏
  • 举报
回复
学习+接分!
xiejingking 2005-04-02
  • 打赏
  • 举报
回复
ding
icwin 2005-03-30
  • 打赏
  • 举报
回复
up
huaqglxy2004 2005-03-24
  • 打赏
  • 举报
回复
up
过客猫2022 2005-03-02
  • 打赏
  • 举报
回复
下面是我写的UDP例子,支持多线程!
你可以在每个线程使用这个对象实例,或多线程使用一个实例!
class XBroadcast
{
public:
XBroadcast();
virtual ~XBroadcast();
void Msg(const char * lpzRemoteHost, int iPort,const void * pBuffer,int iBufferSize);
void Msg(int iPort,const void * pBuffer,int iBufferSize);
void Msg(const char * lpzRemoteHost, int iPort,const XByteBuffer * Buffer );
void Msg(int iPort,const XByteBuffer * Buffer );
private:
TNMUDP * m_UDP;
XDynamicArray<AnsiString> m_IPArray;
TCriticalSection * m_SyncFlag;
};

//------------------------------------------------------------------------------
XBroadcast::XBroadcast()
{
m_UDP = new TNMUDP(NULL);
m_SyncFlag = new TCriticalSection();

unsigned long lBufLen;
unsigned long iIP;
unsigned long iMask;
unsigned long iBroadcastIP;
IP_ADAPTER_INFO *pAdapterInfo;
int IpCount = 0;
GetAdaptersInfo(NULL, &lBufLen);
IpCount = lBufLen/sizeof(IP_ADAPTER_INFO);
if( (lBufLen%sizeof(IP_ADAPTER_INFO)) != 0 ) IpCount++;
pAdapterInfo = new IP_ADAPTER_INFO[IpCount];
memset( pAdapterInfo, 0, sizeof(IP_ADAPTER_INFO) * IpCount );
try
{
if(GetAdaptersInfo(pAdapterInfo, &lBufLen)==NO_ERROR)
{
IP_ADAPTER_INFO *p = pAdapterInfo;

for(int i=0;i<IpCount;i++,p++)
{
iIP = 0;
iMask = 0;
iBroadcastIP = 0;
iIP = inet_addr(p->IpAddressList.IpAddress.String);
iMask = inet_addr(p->IpAddressList.IpMask.String);
iBroadcastIP = (~iMask) | iIP;
in_addr tmpIP;
tmpIP.S_un.S_addr = iBroadcastIP;
m_IPArray.Append(inet_ntoa(tmpIP));
}
}
}
__finally
{
delete[] pAdapterInfo;
}
}
XBroadcast::~XBroadcast()
{
m_SyncFlag->Enter();
m_SyncFlag->Leave();
delete m_UDP;
delete m_SyncFlag;
}
void XBroadcast::Msg(const char * lpzRemoteHost, int iPort,const void * pBuffer,int iBufferSize)
{
m_SyncFlag->Enter();
try
{
m_UDP->RemoteHost = lpzRemoteHost;
m_UDP->RemotePort = iPort;
m_UDP->SendBuffer((char *)pBuffer,iBufferSize,iBufferSize);
}
__finally
{
m_SyncFlag->Leave();
}
}
void XBroadcast::Msg(int iPort,const void * pBuffer,int iBufferSize)
{
int iLen = m_IPArray.Length;
for(int i=0;i<iLen;i++)
{
Msg(m_IPArray[i].c_str(),iPort,pBuffer,iBufferSize);
}
}
void XBroadcast::Msg(const char * lpzRemoteHost, int iPort,const XByteBuffer * Buffer )
{
Msg(lpzRemoteHost,iPort,Buffer->Data(),Buffer->Length);
}
void XBroadcast::Msg(int iPort,const XByteBuffer * Buffer )
{
Msg(iPort,Buffer->Data(),Buffer->Length);
}

fkeumtdh 2005-03-02
  • 打赏
  • 举报
回复
卧底 ^-^
shally5 2005-03-02
  • 打赏
  • 举报
回复
UP
ywyw 2005-03-02
  • 打赏
  • 举报
回复
up
purcjame 2005-03-02
  • 打赏
  • 举报
回复
不一定要多线程 你可以利用handle 单对多一样搞定 Pasp(CJY) 那个你可以看看
sydt2000 2005-03-02
  • 打赏
  • 举报
回复
收藏!!
constantine 2005-02-28
  • 打赏
  • 举报
回复
多线程bcb的没有见过
ssyfrank 2005-02-28
  • 打赏
  • 举报
回复
简单的文件传输,参考一下!
void __fastcall TFm_paper_cast::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
TFileStream *MyFStream;
MyFStream = new TFileStream(OpenDialog1->FileName, fmOpenRead);
try
{
NMStrm1->Host = "172.16.255.255";
NMStrm1->FromName = "cat";
NMStrm1->PostIt(MyFStream);
}
catch(...)
{
}
MyFStream->Free();
}
}

void __fastcall TFm_paper_cast::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
if (FileExists("f:\copy.txt"))
DeleteFile("f:\copy.txt");
TFileStream *MyFStream;
MyFStream = new TFileStream("f:\copy.txt", fmCreate);
try
{
MyFStream->CopyFrom(strm, strm->Size);
}
catch(...)
{
}
MyFStream->Free();
}
Pasp 2005-02-28
  • 打赏
  • 举报
回复
http://www.tiantiansoft.com/Article_Show.asp?ArticleID=140

BCB断点续传和多线程下载 可以不?给分吧
lidawen 2005-02-18
  • 打赏
  • 举报
回复
up
3996906 2005-02-18
  • 打赏
  • 举报
回复
改多线程有点累

只有单的

如果有谁有麻烦给我个,谢谢了~~~~~~~~~~~3996906@163.com

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧