bcb中TServerSocket 多线程阻塞模式收发数据
来源:互联网 发布:javascript调用数据库 编辑:程序博客网 时间:2024/06/05 17:26
使用多线程的阻塞模式要从一个TServerClientThread对象中派生一个类,在类的execute()方法中写收发数据的代码。收数据一般通过TWinSocketStream流实现。
这是派生的类的代码头
//---------------------------------------------------------------------------
#ifndef UnitServerThreadH
#define UnitServerThreadH
//---------------------------------------------------------------------------
#include <ScktComp.hpp>
#include <StdCtrls.hpp>
#include "UnitMain.h"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class TServerThread : public TServerClientThread
{
protected:
void __fastcall ClientExecute(void);
int __fastcall ReadStr(char * buf);
public:
__fastcall TServerThread(bool CreateSuspended, TServerClientWinSocket* ASocket,HWND hWnd);
__fastcall ~TServerThread();
private:
TWinSocketStream *pStream;
HWND m_hwnd;
};
#endif
//cpp文件
#include <vcl.h>
#pragma hdrstop
#include "UnitServerThread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TServerThread::TServerThread(bool CreateSuspended, TServerClientWinSocket* ASocket,HWND hWnd) : TServerClientThread(CreateSuspended,ASocket)
{
m_hwnd=hWnd;
FreeOnTerminate=false;
}
//---------------------------------------------------------------------------
void __fastcall TServerThread::ClientExecute(void)
{//当一个客户连接的时候进入ClientExecute
//1.接收数据
try
{
pStream=new TWinSocketStream(ClientSocket,60000);
char buf[1024];
memset(buf,0,sizeof(buf));
try
{
int len=0;
if(pStream->WaitForData(60000))
{
len=pStream->Read(buf,1024);
buf[len]=0;
}
}
catch(Exception &E)
{
}
//2.发送数据
ClientSocket->SendText("已经收到消息!消息为"+AnsiString(buf));
}
__finally
{
ClientSocket->Close();
delete pStream;
}
}
这是派生的类的代码头
//---------------------------------------------------------------------------
#ifndef UnitServerThreadH
#define UnitServerThreadH
//---------------------------------------------------------------------------
#include <ScktComp.hpp>
#include <StdCtrls.hpp>
#include "UnitMain.h"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class TServerThread : public TServerClientThread
{
protected:
void __fastcall ClientExecute(void);
int __fastcall ReadStr(char * buf);
public:
__fastcall TServerThread(bool CreateSuspended, TServerClientWinSocket* ASocket,HWND hWnd);
__fastcall ~TServerThread();
private:
TWinSocketStream *pStream;
HWND m_hwnd;
};
#endif
//cpp文件
#include <vcl.h>
#pragma hdrstop
#include "UnitServerThread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TServerThread::TServerThread(bool CreateSuspended, TServerClientWinSocket* ASocket,HWND hWnd) : TServerClientThread(CreateSuspended,ASocket)
{
m_hwnd=hWnd;
FreeOnTerminate=false;
}
//---------------------------------------------------------------------------
void __fastcall TServerThread::ClientExecute(void)
{//当一个客户连接的时候进入ClientExecute
//1.接收数据
try
{
pStream=new TWinSocketStream(ClientSocket,60000);
char buf[1024];
memset(buf,0,sizeof(buf));
try
{
int len=0;
if(pStream->WaitForData(60000))
{
len=pStream->Read(buf,1024);
buf[len]=0;
}
}
catch(Exception &E)
{
}
//2.发送数据
ClientSocket->SendText("已经收到消息!消息为"+AnsiString(buf));
}
__finally
{
ClientSocket->Close();
delete pStream;
}
}
0 0
- bcb中TServerSocket 多线程阻塞模式收发数据
- BCB中TClientSocket阻塞方式读写数据
- bcb中使用多线程
- socket中设置收发超时、非阻塞
- 在多线程中,recv非阻塞模式带来的问题
- BCB---多线程
- 在BCB中使用多线程 ( 转载 )
- 在BCB中使用多线程实例
- 在BCB中使用多线程实例
- BCB 高手进阶 (八)TServerSocket和TClientSocket应用技巧
- 多线程非阻塞模式实例
- TServerSocket Open接收不到数据
- VC winsock客户端多线程收发数据
- linux网络编程:设置非阻塞socket收发数据
- linux网络编程:设置非阻塞socket收发数据
- PS模式下的数据收发
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- 移动开发者的小噩梦Google广告沦陷--android反编译实战
- 《Linux程序设计》初学感受,少量bug未能解决
- LINUX命令行如何查看memcache运行状态
- 设置response.setHeader时,含有中文字符,设置出现错误
- 杭电 HDU 1194 Beat the Spread!
- bcb中TServerSocket 多线程阻塞模式收发数据
- Java实现敏感词过滤
- android 周报
- 动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言
- response.setHeader()的用法
- 创新来自于?
- 块级元素以及行内元素居中显示
- ViewPager -----使用Fragment实现ViewPager滑动
- x86汇编语言-01