社区
Windows SDK/API
帖子详情
请教BCB中BeginThread的用法,最好举例
fromv
2003-06-28 03:29:49
BCB中的帮助太少了,看了还是不明白。那位帮忙?
...全文
259
7
打赏
收藏
请教BCB中BeginThread的用法,最好举例
BCB中的帮助太少了,看了还是不明白。那位帮忙?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
学习
bcb
ListView的
用法
转自 http://ycool.com/post/ppt8s37 ListView的vsReport模式可以添加多个columne,于是针对每个column的操作问题就成了个问题…… 下面直接帖出研究结论: 1、使用ListView->Items->Add() 方法添加新的Item(即一行),返回值类型为TListItem *,指向新添加的Item; 2、使用li
BCB
6
中
使用sqlite
维京猎人的方法。 Sqlite版本3.8.2 自从网友推荐我用SQLite以后,我就从网上学习
BCB
6使用SQLite的
用法
。网上找到的方法总结为两个:一个利用
BCB
自带的implib软件,将SQLite网站提供的DLL生成lib文件,将lib、h、dll三个文件应用到自编的软件上;另一个办法是利用VC或VS,将SQLite网站提供的DEF生成lib文件,再用
BCB
的coff2o...
在
bcb
中
添加activex控件_
bcb
安装控件方法汇总
1.
BCB
菜单: Project->Options->Packages->Add[喝小酒的网摘]http://blog.const.net.cn/a/8496.htm如果是
BCB
6: 选择安装的文件夹 yb_base_c6.bpl 和 yb_comm_c6.bpl, 然后按“打开”按钮如果是
BCB
5: 选择安装的文件夹 yb_base_c5.bpl 和 yb_comm_c5.b...
bcb
中
TChart组件的简单应用
bcb
的TChart组件是一个用来画坐标图的组件,它的集成度很高,用它可以很方便地画出所需要的坐标系和图形。而且可以是二维的,也可以是多维的。TChart为画图提供了各式各样的模版。下面的这个工程是TChart组件的最简单
用法
,它仅仅生成了一个二维坐标系,并在这个坐标系上将一个txt文件
中
记录的随机二维坐标显示出来。1、建一个
bcb
工程,将Additional组件组的Chart组
AnsiString的基本
用法
bcb
第一弹
最近由于处在半转型状态,学
bcb
也是模模糊糊。 由于在学C++builder,ansistring是
bcb
中
提供的类跟java
中
的String差不多 但是,比c++
中
的String在
bcb
中
据说好用多了,在网上转了一篇anstring的
用法
。我发现这个
bcb
网上资料不怎么多啊,特别是组件方面的具体
用法
。以后,可能发一些组件的具体操作吧。 以下是转贴能容,感谢原作者的努力: /
Windows SDK/API
1,222
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章