📄 谁有c++的多线程编程资料,源代码?? c++ builder - 网络及通讯开发 - 社区 community_csdn_net.txt
字号:
HANDLE hComm;
//---------------------------------------------------------------------------
__fastcall TmainForm::TmainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TmainForm::Button1Click(TObject *Sender)
{
char *ComNo;
String Temp;
DCB dcb;
Temp="COM"+IntToStr(RadioGroup1->ItemIndex+1);
ComNo=Temp.c_str();
hComm=CreateFile(ComNo,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
MessageBox(0,"端口打开错误!","Comm Error",MB_OK);
return;
}
//设置串口参数
GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
MessageBox(0,"端口设置错误!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
Read232->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TmainForm::Memo1KeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(Key!=13) //回车结束输入
return;
if(hComm==0) //检测端口状态
return;
Temp=Memo1->Text;
SendData=Temp.c_str();
BS=Temp.Length();
WriteFile(hComm,SendData,BS,&lrc,NULL); //发送数据
}
//---------------------------------------------------------------------------
void __fastcall TmainForm::FormCreate(TObject *Sender)
{
Read232=new TRead232(true);
Read232->FreeOnTerminate=true;
}
//---------------------------------------------------------------------------
void __fastcall TmainForm::Button2Click(TObject *Sender)
{
Read232->Terminate();
if(hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
//---------------------------------------------------------------------------
希望对你有个启示!!!!
Top
6 楼wgh166(涌金水牛)回复于 2002-11-15 12:49:09 得分 0 up
Top
7 楼wgh166(涌金水牛)回复于 2002-11-15 13:16:56 得分 0
/---------------------------------------------------------------------------
__fastcall TCleanDataThread::TCleanDataThread(AnsiString sdate)
: TThread(false)
{
}
void __fastcall TCleanDataThread::CleanData()
{
try{
CleanForm->Button1->Enabled=false;
CleanForm->ADOStoredProc1->Parameters->Items[1]->Value=CleanForm->DateTimePicker1->Date.FormatString("yyyy-mm-dd");
// CleanForm->ADOStoredProc1->Prepare();
CleanForm->ADOStoredProc1->ExecProc();
CleanForm->num=CleanForm->ADOStoredProc1->Parameters->Items[0]->Value;
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
CleanDataThread = new TCleanDataThread(sDate);
CleanDataThread->Priority = tpIdle;
CleanDataThread->OnTerminate=DisplayResult;//线程停止
........
//---------------------------------------------------------------------------
void __fastcall TCleanDataThread::Execute()
{
CleanData();
//---- Place thread code here ----
}
//---------------------------------
Top
8 楼gudufeixiang(七星龙渊)回复于 2002-12-24 01:07:14 得分 0 m
Top
9 楼cuilin2002(青出于蓝而胜于蓝)回复于 2002-12-25 11:25:46 得分 0 给你个api的例子
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "winsock2.h"
#include "s.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#define WSVERS MAKEWORD(2, 0)
DWORD WINAPI TCP_Echo(LPVOID lpPara);
DWORD WINAPI MainThread(LPVOID lpPara);
TForm1 *Form1;
struct sockaddr_in fsin,sin;
SOCKET msock, ssock;
unsigned short port =3223;
int alen;
HANDLE Socket_Single[3];
int CreateListen();
//---------------------------------------------------------------------------
DWORD WINAPI TCP_Echo(LPVOID lpPara)
{
char buf[858];
char buff1[9];
char buff2[850+1];
SOCKET socket;
socket=(SOCKET )lpPara;
recv(socket, buf, sizeof(buf), 0);
send(socket,buf,sizeof(buf),0);
Form1->Memo1->Lines->Add(buf);
memset(buff1,0,sizeof(buff1));
memset(buff2,0,sizeof(buff2));
memcpy(buff1,buf,8);
memcpy(buff2,buf+8,850);
long pri=0;
DWORD dw=WaitForMultipleObjects(3,Socket_Single ,false ,60000);
switch (dw)
{
case WAIT_OBJECT_0+0 :
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Add("INSERT INTO
T_toSwitch (capcode,contents)");
Form1->Query1->SQL->Add("VALUES(:buff1,:buff2)");
Form1->Query1->Params->Items[0]->AsString=buff1;
Form1->Query1->Params->Items[1]->AsString=buff2;
Form1->Query1->ExecSQL();
ReleaseSemaphore(Socket_Single[0]
,1,&pri);
break;
case WAIT_OBJECT_0+1 :
Form1->Query2->SQL->Clear();
Form1->Query2->SQL->Add("INSERT INTO
T_toSwitch (capcode,contents)");
Form1->Query2->SQL->Add("VALUES(:buff1,:buff2)");
Form1->Query2->Params->Items[0]->AsString=buff1;
Form1->Query2->Params->Items[1]->AsString=buff2;
Form1->Query2->ExecSQL();
ReleaseSemaphore(Socket_Single[1]
,1,&pri);
break;
case WAIT_OBJECT_0+2 :
Form1->Query3->SQL->Clear();
Form1->Query3->SQL->Add("INSERT INTO
T_toSwitch (capcode,contents)");
Form1->Query3->SQL->Add("VALUES(:buff1,:buff2)");
Form1->Query3->Params->Items[0]->AsString=buff1;
Form1->Query3->Params->Items[1]->AsString=buff2;
Form1->Query3->ExecSQL();
ReleaseSemaphore(Socket_Single[2]
,1,&pri);
break;
case WAIT_TIMEOUT :
break;
default:
break;
}
closesocket(socket);
return 0;
}
DWORD WINAPI MainThread(LPVOID lpPara)
{
CreateListen();
return 0;
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Socket_Single[0] = CreateSemaphore(NULL,1,1,NULL);
Socket_Single[1] = CreateSemaphore(NULL,1,1,NULL);
Socket_Single[2] = CreateSemaphore(NULL,1,1,NULL);
}
//---------------------------------------------------------------------------
int CreateListen()
{
WSADATA wsadata;
if (WSAStartup(WSVERS,&wsadata) != 0)
{
MessageBox(NULL,"wsock32.dll can not be
initialized","warning",MB_OK);
exit(EXIT_FAILURE);
}
Form1->Memo1->Lines->Add("服务器已经启动");
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr =INADDR_ANY;
sin.sin_port = htons(port);
msock = socket(AF_INET, SOCK_STREAM, 0);
if (msock == INVALID_SOCKET)
{
MessageBox(NULL,"create socket error!","warning",MB_OK);
exit(EXIT_FAILURE);
}
if (bind(msock, (struct sockaddr *)&sin,
sizeof(sin))==SOCKET_ERROR)
{
MessageBox(NULL,"bind error!","warning",MB_OK);
exit(EXIT_FAILURE);
}
if (listen(msock, 200)==SOCKET_ERROR)
{
MessageBox(NULL,"listen error!","warning",MB_OK);
exit(EXIT_FAILURE);
}
while(1)
{
alen = sizeof(struct sockaddr);
ssock = accept(msock, (struct sockaddr
*)&fsin, &alen);
Form1->Memo1->Lines->Add("connect");
if (ssock == INVALID_SOCKET)
{
MessageBox(NULL,"accept error!","warning",MB_OK);
exit(EXIT_FAILURE);
}
DWORD dwThreadId;
if(CreateThread(NULL,0,TCP_Echo,(LPVOID)ssock,0,&dwThreadId)<0)
{
MessageBox(NULL,"Create thread
error!","warning",MB_OK);
exit(EXIT_FAILURE);
}
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD ID;
CreateThread(NULL,0,MainThread,NULL,0,&ID);
return ;
}
//---------------------------------------------------------------------------
Top
10 楼easyxu(Bryan)回复于 2002-12-25 16:59:38 得分 0
好好棒哟,你工作的地方不错嘛。
Top
你可能对以下的问题也比较感兴趣....谁有c++builder的网络、数据库 多线程编程资料,源代码??
C#的多线程编程
Windows 核心编程 C++ 源代码
c++能实现多线程编程吗?
Pro *C编程,多线程处理
C++Builder多线程编程实例
求《C++编程思想》的配书源代码
哪里有<<VISUAL C++MFC扩展编程实例>>的源代码?
Copyright © 2005-2008 80diy.com All rights reserved.Best view by
IE5.x 1024*768
站长统计
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -