我在delphi里服务端用serversocket阻塞模式来编程,clientsocket也是用阻塞模式来编程,
但是我在客户端开60个线程来对服务端测试时,当线程到到几个后,客户端会出现“windows socket error 不能做任何连接,因为目标机器积极拒绝它(10061),on api connect ”我服务端用twinsocketstream 来读取和发送数据
在就是在多线程里adoconnection和ado动太访问数据库如何很好的控制
但是我在客户端开60个线程来对服务端测试时,当线程到到几个后,客户端会出现“windows socket error 不能做任何连接,因为目标机器积极拒绝它(10061),on api connect ”我服务端用twinsocketstream 来读取和发送数据
在就是在多线程里adoconnection和ado动太访问数据库如何很好的控制
的连接,这时候再多连接,就没有位置让它等待,就会返回100061
serversocket采用threadblocking的模式,中心库采用oracle,同时一个线程、
可能还要到异地的sql6.5去取数据库,现在程序在几个客户连接测试后,
怎么现在再次打开oracle会出先"ora-12514 Tns listener could not resolve
service_name given in connect desciptor"
好象oracle连接不上啊,难道serversocket多线程去连接oracle会有什么设置吗,急急......
不过要指定失败次数,比如超过10次就不再连接
procedure TMyThread.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
FTimes := FTimes + 1;
FMemo.Lines.Add(FText+' '+IntToStr(FTimes)+' Times Error Connecting To : ' + FServer);
if FTimes<11 then
Execute;
ErrorCode := 0;
end;
的连接,这时候再多连接,就没有位置让它等待,就会返回100061不要误导用信号量等等控制线程,用winsock api来开发(需要高性能的通讯程序最好不要用Delphi的现成组件),我写的通讯平台客户端可以同时并发几千个连接,服务端可以运行几个礼拜不停机都没问题.如果客户端
很多,最好在通讯服务端实现负载均衡等技术,这样你客户端几千上万的连接都没问题