社区
网络及通讯开发
帖子详情
ServerSocket在阻塞方式下收发信息
yiweichun
2005-01-27 05:09:12
小弟在用ServerSocket在阻塞方式下收发信息时出现问题,不知如何使用多线程的方式实现ServerSocket的接收与发送?
...全文
144
4
打赏
收藏
ServerSocket在阻塞方式下收发信息
小弟在用ServerSocket在阻塞方式下收发信息时出现问题,不知如何使用多线程的方式实现ServerSocket的接收与发送?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大海1986
2005-01-27
打赏
举报
回复
先学习下 关注!!
yiweichun
2005-01-27
打赏
举报
回复
谢了,我研究研究先
constantine
2005-01-27
打赏
举报
回复
class TForm1 : public TForm
{
__published: // IDE-managed Components
TServerSocket *ServerSocket1;
void __fastcall ServerSocket1GetThread(TObject *Sender,
TServerClientWinSocket *ClientSocket,
TServerClientThread *&SocketThread);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------
class MyThread : public TServerClientThread
{
private:
UINT FTimeOut;
TWinSocketStream* WskStream;
protected:
void __fastcall ClientExecute();
public:
__fastcall MyThread(TServerClientWinSocket*);
__property UINT TimeOut = { read=FTimeOut, write=FTimeOut };
};
//主程序
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ServerSocket1->Port = 100;
ServerSocket1->ServerType
= stThreadBlocking;
ServerSocket1->Active = true;
}
//-------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
ServerSocket1->Active = false;
}
//------------------------------------------------------------
void __fastcall TForm1::ServerSocket1GetThread(TObject *Sender,
TServerClientWinSocket *ClientSocket,
TServerClientThread *&SocketThread)
{
SocketThread = new MyThread(ClientSocket);
SocketThread->Resume();
}
//-----------------------------------------------------------
__fastcall MyThread::MyThread(TServerClientWinSocket* socket)
: TServerClientThread(true,socket)
{
}
//---------------------------------------------------------
//示范程序里,收到的数据写到文件"test*.dat"
void __fastcall MyThread::ClientExecute()
{
int len;
FILE *fp;
char buf[2048];
static int num=0;
TimeOut = 300000; //300秒
WskStream = new TWinSocketStream(
ClientSocket, TimeOut);
while(1) {
sprintf(buf, "test%04x.dat",
num++);
if (!FileExists(buf)) {
fp = fopen(buf, "wb");
if (fp!=NULL) break;
}
}
try {
DWORD dwTick = GetTickCount();
while(ClientSocket->Connected
&& !Terminated) {
if (!WskStream->WaitForData(
5000)) {
if (GetTickCount()-dwTick
<TimeOut)
continue;
//在规定时间内没有收到数据,
//结束线程
break;
}
len = WskStream->Read(buf,
sizeof(buf));
dwTick = GetTickCount();
if (len <= 0) {
//读数据出错,这儿做一些
//处理
break;
}
//添加收到数据的处理,这儿写到
//文件 test*.dat 中 ...
fwrite(buf, 1, len, fp);
}
if (ClientSocket->Connected)
ClientSocket->Close();
}
catch(Exception& e) {
MessageBox(0, e.Message.c_str(),
"Error", MB_ICONERROR);
}
fclose(fp); delete WskStream;
}
//-------------------------------------------------------
这个可以参考,好象是jsp老大写o
constantine
2005-01-27
打赏
举报
回复
用indy控件就是阻塞的,非要用ServerSocket,到faq里面找找
Socket与
ServerSocket
编程实践聊天
在聊天应用中,每个用户都可以被看作是一个独立的Socket实例,通过Socket进行消息的
收发
。 在实践编程中,我们通常遵循以下步骤: 1. **创建
ServerSocket
**:服务器启动时,首先创建一个
ServerSocket
实例,并指定...
两台安卓手机通过socket 相互
收发
信息
完整源码 android studio socket server
在Android平台上,Socket编程是一种常见的通信
方式
,它允许设备间进行低级别、基于网络的数据传输。本示例中,我们有两台安卓手机,一台作为Socket服务器(SocketServer),另一台作为Socket客户端(SocketClient)...
java做的短消息平台通过网络进行
收发
信息
平台
通过以上技术的综合运用,Java构建的短消息平台能够实现高效、安全的网络
收发
信息
功能,满足不同场景下的需求。随着技术的不断发展,这种平台还在持续进化,以适应更快的数据传输速度、更丰富的媒体类型以及更高的...
基于TCP的Socket&
ServerSocket
通讯
在IT行业中,网络通信是至关重要的一个领域,特别是在分布式系统和互联网应用中。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,而Java中的Socket和
ServerSocket
类则是实现TCP通信的...
多线程实现消息
收发
的Demo
例如,在消息
收发
的场景中,创建一个线程专门负责接收消息,另一个线程则负责发送消息,这样可以避免因为等待I/O操作完成而
阻塞
整个程序的执行。 在多线程编程中,需要注意线程安全、竞态条件、死锁等问题。线程...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章