GPRS服务端关于GPRS连接的问题。

delphi_wo 2008-05-29 09:34:43
基本情况:
GPRS服务端运行在XP系统的电脑上,XP系统的连接数已经改为2000,GPRS硬件设备安装在现场,一共24个,GPRS每到整点时间就连接服务端并发送数据,如果连接不成功,在到10分再连接发送数据。

出现的问题:
正常情况下每到整点这个24个设备都应该正常与服务端建立连接,但现在的情况是每到整点,这些设备只有10来个能够连接到服务端,到整点的10分时,剩下的几个才与服务端建立连接,而且这24个设备交替出现这种情况。(GPRS设备是建立连接成功后等待3-5秒后发送数据)。

代码:
我用delphi7开发的服务端,使用ServerSocket控件,ServerType的属性为stThreadBlocking,ThreadCacheSize=500,

procedure TFrm_Main.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
SocketThread:=TThread_Socket.Create(false,ClientSocket);//创建一个线程
end;

建立一个线程:TThread_Socket
procedure TThread_Socket.ClientExecute;
var
Data: array[0..1023] Of char;
SocketStream: TWinSocketStream;
ms:integer;
begin
FreeOnTerminate := True;
ms:=30000;
while not Terminated and ClientSocket.Connected do
begin
try
try
SocketStream:=TWinSocketStream.Create(ClientSocket,ms);
FillChar(Data, SizeOf(Data), 0);
if SocketStream.WaitForData(ms) then
begin
try
if SocketStream.Read(Data, SizeOf(Data))=0 Then
begin
ClientSocket.Close;
Terminate;
end
else
begin
TempInBuff:=Data;
Delete(TempInBuff,Pos(#13#10,TempInBuff),2);
Synchronize(GetPack);//GetPack为处理数据的过程。
end;
except
ClientSocket.Close;
Terminate;
end;
end
else
begin
ClientSocket.Close;
Terminate;
end;
finally
SocketStream.Free;
end;
except
ClientSocket.Close;
Terminate;
end;
end;
end;

基本情况就是这样了,请大家帮帮忙,谢谢!



...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlingaaa 2008-05-31
  • 打赏
  • 举报
回复
移动的基站同时在线数可是有限制的,我们就碰到过某个地点同时只有20个GPRS终端上线的情况,搞了半天原来是移动的问题;
不过服务端用TServerSocket可能太...用indy吧,如果以后连接多了,还是自己写IOCP比较可靠
gzmhero 2008-05-30
  • 打赏
  • 举报
回复
可不可能是到整点的时候,你的Server线程cpu占用太厉害,导致其他部分连接没有反应。

为什么不把设备排队呢。给每个设备编号1,2,3,4,在整点+编号 的时间建立连接,错开高峰。
delphi_wo 2008-05-29
  • 打赏
  • 举报
回复
我用delphi写了模拟GPRS设备的程序,运行了100个,同时连接服务端并发送数据,也是连接不完,也就70多个正常连接,我从网上下载了一个TCP服务端软件,让那24个设备连接这个服务端软件,结果连接数都正常,我感觉还是服务端的问题。
mastersky 2008-05-29
  • 打赏
  • 举报
回复
GPRS连接不一定总是很快成功的。
mastersky 2008-05-29
  • 打赏
  • 举报
回复
用TCP客户端软件试一下,如果没问题的话,可能是GRPS硬件终端的问题。
delphi_wo 2008-05-29
  • 打赏
  • 举报
回复
gprs设备应该没有问题,我还是认为是服务端的问题。
brightyang 2008-05-29
  • 打赏
  • 举报
回复
或者不用等10分钟
brightyang 2008-05-29
  • 打赏
  • 举报
回复
并发数也不大呀

可以考虑把gprs机器里面的精震时间拨一下

AP 2008-05-29
  • 打赏
  • 举报
回复
看一下 CPU 的使用率 如果太高
在线程中适当的地方 + Sleep(10)

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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