社区
Windows SDK/API
帖子详情
请教BCB中BeginThread的用法,最好举例
fromv
2003-06-28 03:29:49
BCB中的帮助太少了,看了还是不明白。那位帮忙?
...全文
293
7
打赏
收藏
请教BCB中BeginThread的用法,最好举例
BCB中的帮助太少了,看了还是不明白。那位帮忙?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
perl2003
2003-06-28
打赏
举报
回复
继承TThread
pp616
2003-06-28
打赏
举报
回复
//别人的代码。忘了到底是谁的了。你可以参考一下。
#include <vcl.h>
#include <dstring.h>
#include <stdio.h>
#include <winsock.h>
#include <process.h>
void TCP_Echo(void *pfd);
int main()
{
struct sockaddr_in fsin, sin;
SOCKET msock, ssock;
struct hostent *hostname;
unsigned short port = 10914;
int alen;
char string[25];
WSADATA wsadata;
if (WSAStartup(WSVERS, &wsadata) != 0)
{
printf( "调用winsock.dll失败! ");
return -1;
}
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr =inet_addr(""); //
sin.sin_port = htons(port);
msock = socket(PF_INET, SOCK_STREAM, 0);
if (msock == INVALID_SOCKET)
{
printf( "create socket error\n ");
return -1;
}
if (bind(msock, (struct sockaddr *)&sin, sizeof(sin))==SOCKET_ERROR)
{
printf( "bind error\n ");
return -1;
}
if (listen(msock, 5)==SOCKET_ERROR)
{
printf( "listen error\n ");
return -1;
}
//hostname=gethostbyaddr(inet_ntoa(sin.sin_addr),8,0);
//printf( "%s\n ",hostname- >h_name);
printf( "本地地址:%s\n ",inet_ntoa(sin.sin_addr));//
printf( "服务器监听端口:%d\n ",ntohs(sin.sin_port));
while(1)
{
alen = sizeof(struct sockaddr);
ssock = accept(msock, (struct sockaddr *)&fsin, &alen);
if (ssock == INVALID_SOCKET)
{
printf( "accept error\n ");
return -1;
}
printf( "有客户连接自 %s\r\n ", inet_ntoa(fsin.sin_addr));
memset(string,0x00,25);
itoa(fsin.sin_port, string, 10);
printf( "有客户连接自 %s\r\n ",string );
if(_beginthread(TCP_Echo, STKSIZE, (void *)&ssock)<0)
{
printf( "启动新线程失败!\n ");
return -1;
}
}
}
//线程要调用的函数:处理客户发送来的数据
void TCP_Echo(void *pfd)
{
char buf[4096];
int cc = 0;
SOCKET *fd=(SOCKET *)pfd;
memset(buf, 0, sizeof(buf));
strcpy(buf, "Enter 'Q' to exit\r\n ");
if (send(*fd, buf, strlen(buf), 0)==SOCKET_ERROR)
{
printf( "echo send error\n ");
return ;
}
memset(buf, 0, sizeof(buf));
cc = recv(*fd, buf, sizeof(buf), 0);
printf( "客户发送的数据:%s\n ", buf);
while(cc!=SOCKET_ERROR && cc > 0)
{
if (send(*fd, buf, cc, 0)==SOCKET_ERROR)
{
printf( "echo send error\n ");
break;
}
/* if (send(fd, "\r\n ", 2, 0)==SOCKET_ERROR)
{
printf( "echo send error\n ");
break;
}*/
memset(buf, 0, sizeof(buf));
cc = recv(*fd, buf, sizeof(buf), 0);
printf( "客户发送的数据:%s\n ", buf);
if (buf[0]=='Q')
{
_endthread();
// return 0;
break;
}
}
if (cc==SOCKET_ERROR)
printf( "echo recv error\n ");
closesocket(*fd);
return ;
}
albeta
2003-06-28
打赏
举报
回复
从Tthread继承一个子类,就可以了,难道要这么复杂么?
HUANG_JH
2003-06-28
打赏
举报
回复
typedef unsigned ( WINAPI *PBEGINTHREADEX_THREADFUNC )( LPVOID lpThreadparameter ) ;
typedef unsigned *PBEGINTHREADEX_THREADID;
bool m_bDisplayThreadTerminate;
DWORD dwDisplayThreadId ;
HANDLE m_hDisplayThreadHandle;
dwDisplayThreadId = 0;
m_hDisplayThreadHandle = (HANDLE)_beginthreadex(NULL, 0, ( PBEGINTHREADEX_THREADFUNC )DisplayRoutine, ( LPVOID )this, 0, (PBEGINTHREADEX_THREADID)&dwDisplayThreadId );
if(m_hDisplayThreadHandle == INVALID_HANDLE_VALUE)
{
Application->MessageBox("无法建立接收数据线程!", "警告", MB_OK | MB_ICONWARNING);
return ;
}
yuanhen
2003-06-28
打赏
举报
回复
BeginThread和API CreateThread差不多!
yuanhen
2003-06-28
打赏
举报
回复
为什么不用TThread。
yydy
2003-06-28
打赏
举报
回复
学习
采用_be
gin
thread
/_be
gin
thread
ex函数创建多线程
1、CRT简介:CRT: (C Runtime Library)即C运行时库,是系统运行的基础,包含了c常用的函数集(如:printf,malloc,strcpy等),为运行main做了初始化环境变量、堆、io等资源,并在结束后清理。在Windows环境下,VC提供的 C run-time library又分为动态运行时库、静态运行时库、多线程、单线程、调试版本(Debug)、发行版本(Releas
把C++类成员方法直接作为线程回调函数
我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意
中
学会了这一招:) 类成员方法是一个比较特殊的函数,它在编译时会被转化成普通函数,比如有TMyClass类:class TMyClass{ void Func();};这个TMyClass::Fu
高校如何通过数据分析提升技术转移转化率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
计及需求侧响应日前、日内两阶段鲁棒备用优化(Matlab代码实现)
内容概要:本文研究了计及需求侧响应的日前、日内两阶段鲁棒备用优化问题,提出了一种基于数据驱动的两阶段分布鲁棒优化方法,结合1-范数和∞-范数构造不确定性集合,有效刻画风电、光伏出力及负荷等多重不确定因素的波动特性。研究构建了电热综合能源系统的联合优化模型,通过协调日前调度计划与日内实时调整,充分发挥需求侧响应资源的灵活调节能力,提升系统在不确定性环境下的备用充裕性与运行鲁棒性,并采用Matlab进行建模与仿真验证,结果表明该方法在保障系统安全的同时显著改善了经济性。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事新型电力系统调度、综合能源系统规划与运行的工程技术人员。; 使用场景及目标:①应用于高比例可再生能源接入背景下电力系统备用容量的优化配置;②为综合能源系统在多重不确定性下的鲁棒调度提供决策支持;③支撑需求侧资源参与系统辅助服务的机制设计与仿真验证,推动源荷互动协调发展。; 阅读建议:建议读者结合Matlab代码深入理解两阶段鲁棒优化的建模过程,重点关注不确定性集构建、鲁棒约束转化及C&CG等求解算法的实现细节,可进一步拓展至其他分布鲁棒优化形式或耦合更多能源形式的综合能源系统场景。
Windows SDK/API
1,222
社区成员
8,135
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章