多线程和网络

夭夭 2001-04-25 03:27:00
我想做一个基于TCP/IP的软件,用来跑密码。
用C++ BUILDER的多线程来写,可找不到一个类来和网络连接,
用clientsockets不行,这是VCL的,
C++ BUILDER里有没有直接可以用的类???
请高手指点,最好有例子!
是VC的例子也行

...全文
252 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
master369 2001-07-27
  • 打赏
  • 举报
回复
: TangSe(桔右京)
你写的在线程里出不来呀(单进程可以) 

OnRead事件:
在线程类中加入:

快回答
master369 2001-07-26
  • 打赏
  • 举报
回复
DyingBird(不死鸟) 
TServerSocket 已经用的是这东西了



夭夭 2001-05-04
  • 打赏
  • 举报
回复
Winsock的WSAAsyncSelect????
DyingBird 2001-05-03
  • 打赏
  • 举报
回复
多线程和网络?也许是最佳组合。
在很多或大多时候,不一定要采用多线程,照样可以达到多线程的效果。
利用Winsock的WSAAsyncSelect的消息机制。
夭夭 2001-05-02
  • 打赏
  • 举报
回复
thank you!

i will try it ?
猛禽 2001-05-01
  • 打赏
  • 举报
回复
非阻塞方式下Active=true并不是等到连接建立才执行下去的,而是开始连接就执行下面的语句,应该用阻塞方式才可以在这里等到连接建立。
「已注销」 2001-04-30
  • 打赏
  • 举报
回复
关注
夭夭 2001-04-30
  • 打赏
  • 举报
回复
i just try!
夭夭 2001-04-30
  • 打赏
  • 举报
回复
i just try!
Sun2001 2001-04-28
  • 打赏
  • 举报
回复
应该是因为Socket的连接需要一定的时间,tempSocket->Active=true后还没有真正连接上,你就tempSocket->Socket->SendText(c),所以服务器端收不到。
夭夭 2001-04-28
  • 打赏
  • 举报
回复
void __fastcall getpwd::Execute()
{
AnsiString c;
TClientSocket *tempSocket = new TClientSocket(Form1);
tempSocket->Active=false;
tempSocket->Address="10.5.1.42" ;
tempSocket->Port=8888;
tempSocket->ClientType=ctNonBlocking;
tempSocket->Active=true;
c="i love you";
tempSocket->Socket->SendText(c);
}
这是我的测试代码部分,每次启动线程,我的服务器都没有收到消息“i love you”
单步执行时,到tempSocket->Active=true;这一行,发现其值还是FALSE;
为什么???
TangSe 2001-04-27
  • 打赏
  • 举报
回复
时间很好写呀,比如OnRead事件:
在线程类中加入:
void __fastcall SocketOnRead(TObject *Sender,TCustomWinSocket *Socket);

然后
TClientSocket *tempSocket = new TClentSocket(NULL)
tempSocket->OnRead=SocketOnRead;
-------------
void __fastcall MyThread1::SocketOnRead(TObject *Sender,TCustomWinSocket *Socket)
{
MessageBox(NULL,"ReadData!","Afasfaf",MB_OK);
}

其他一样。
还有什么问题吗?
(为什么要破解密码?呵呵。。。和我原来一样。)
夭夭 2001-04-27
  • 打赏
  • 举报
回复
我是想做在TCP/IP层,
这样POP3,PROXY,。。。都可以破了,只要给定一下应答字符串。可这样写的话:
TClientSocket tempSocket = new TClentSocket(NULL)
它的事件怎么写(ie onread)?
Sun2001 2001-04-27
  • 打赏
  • 举报
回复
to TangSe(桔右京):

frmMain是我写的程序里面主Form的Name,因为是拷贝的,忘了改,应该没有问题的。呵呵!^_^
rh 2001-04-26
  • 打赏
  • 举报
回复
直接写原始套接字好些
在win2000下还可以隐藏ip^_^
夭夭 2001-04-26
  • 打赏
  • 举报
回复
winsy(鹰派) :
这样做的话,还是在用同一个呀。
我先试试,
鹰派 2001-04-26
  • 打赏
  • 举报
回复
用TThread的Synchronize
ClientSocket用阻塞运行(Blocking)
TangSe 2001-04-26
  • 打赏
  • 举报
回复
跑密码?什么密码?FTP,POP3 or ...?
to Sun2001(蜡笔):
好象如果这样的话:TClientSocket tempSocket = new TClentSocket(frmMain);会有问题,这样就不会:TClientSocket tempSocket = new TClentSocket(NULL);不知道怎么回事?还望指教,谢谢!
to rh:
不能隐藏ip(如果在同一个网段的话可以,A主机用B主机的地址发送,然后截获所有数据包(需先设置网卡的“混杂”模式),分离出发往B机的数据包。拨号上网不行),因为要连接主机并破获密码。如果想写DOS攻击程序的话可以隐藏ip.

我以前对破解密码也有兴趣,呵呵,给你一个连接程序:这是smtp连接,
它是有序列的。

struct hostent *hp2=gethostbyname("smtp.263.net");
char buf[256]; char msg[4096];
SOCKADDR_IN sa;
SOCKET server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET) return 2;
memset(&sa,0,sizeof(sa));
sa.sin_family =AF_INET;
sa.sin_port=htons(25);
memcpy(&sa.sin_addr,hp2->h_addr,hp2->h_length);
if(connect(server,(struct sockaddr *)&sa,sizeof(sa))) return 3;
if(recv(server,buf,sizeof(buf),0)==SOCKET_ERROR) return 4;
连接成功,可以发送信息了,比如破解密码,呵呵(smtp.263.net改为pop.263.net,断口也改一下)
猛禽 2001-04-26
  • 打赏
  • 举报
回复
这种情况下还是用WinSock写好些。不过蜡笔兄的建议也可行。
夭夭 2001-04-26
  • 打赏
  • 举报
回复
行不
加载更多回复(7)

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧