难题!(50分)

  • 主题发起人 主题发起人 kevincsg
  • 开始时间 开始时间
K

kevincsg

Unregistered / Unconfirmed
GUEST, unregistred user!
程序思路是这样的,有许多客户端向服务端发消息(用socket),
服务端收到消息后要写数据库(sqlserver),程序调试没问题(c/s结构),
在客户端,服务端都行,测试了几台机器都没问题,可客户端一超过10机器,
就报错,说什么(找不到对象或对象无效,还有什么Connection错误)
不知为何?请高人指点一二!!!
 
sqlserver的许可问题吧。
 
将serversocket 的threadcachesize设置大点
 
同意黄耀彰,另外还有Server的许可问题,是几客户的。看看许可协议管理器。
 
serversocket 的threadcachesize我已经设置好了6000够大了,
还有Server的许可问题什么意思?我在这方面不太懂,请详细的讲一讲!谢谢!!!
还有server端配置是win98+64M(是不是小了点)
 
应该就是许可协议的问题,因为我们公司原来就是碰到过这个问题。
你在控制面板中打开“许可协议”,里面会有NT Server和SQL Server的许可协议,会有
每服务器允许有多少个并发连接这样的选项,如果不够的话,添加就是了。
当然,你的服务器应该是NT吧。
 
对不起,我没有讲清楚,客户端是用来发消息,服务端收到消息后,是服务端来写数据库
,这会不会也有许可问题,(因为是win98,所以没有许可协议)在sqlserver中我已经看
过了,是无限(0),这也没问题,那么到底问题出在哪呢?
会不会是socket出错,会不会???
我在调试状态运行,它是这样说的(user Windows socket error(10054) on API 'recv')
后来以出现(Variant does not reference an automation object)
程序执行到Scktcomp.pas文件中
(raise EsocketError.CreateFmt(sWindowsSocketError,[sysErrorMessage(ErrorCode),
ErrorCode,'recv']));
请高手指点一二!!
 
没人懂吗?急!!!!!
 
高手吃饭应该吃好了吧!.....急!!!!!!!!!!!
 
你的“SQL Server”也安装在Windows98上?
SQL Server 和 NT Server 都需要“许可协议”!
 
to shangcm
sqlserver,98我都看过了,许可协议都对。
还有我这个程序,要调用二个数据库,因为某些原因,数据库分别在两台机器上,都用
sqlserver.
还有请各位高手帮忙看一下这段错误信息.
它是这样说的(user Windows socket error(10054) on API 'recv')
后来以出现(Variant does not reference an automation object)
程序执行到Scktcomp.pas文件中
(raise EsocketError.CreateFmt(sWindowsSocketError,[sysErrorMessage(ErrorCode),
ErrorCode,'recv']));
请高手指点一二!!
这个问题真烦死我了,不知道怎么解决!!!
 
1)观察问题的产生背景,是在10个客户端都启动后随机发作,还是只在某一台机器上
发作,是否在某个操作后发作等等,找到后判断这个错误的方向、性质。
2)你可以用winsock单元中的底层socket api尝试连接、工作,如果可以说明你的delphi
组件有问题,调一下参数或改用别的办法。
3)模拟客户端发数据,在服务器上。让接受数据以后的程序独立运行,可以检测你的
错误是否发自服务器或数据库服务器。
4)把整个程序流程从中间截断,然后找出有问题的一端,然后再截断........
别烦,问题往往是不经意中解决的,解决后你会功力大增,先祝贺了。
 
可能不是数据库的问题, 也不是连接数的问题,
你在连接时是否在Server程序中有计数器label显示在屏幕上,请把这个label宽度拉大,
并且autosize改为false.
 
可能不是数据库的问题, 也不是连接数的问题,
你在连接时是否在Server程序中有计数器label显示在屏幕上,请把这个label宽度拉大,
并且autosize改为false.
 
许可协议指的是控制面板里的NT服务器的许可协议,
而不是SQL SERVER上的,调整它的大小,再试试看

 
to All
发生了错误后,我为了找到server能承受的极限,我先从5台机器开始,一台一台增加,
直到第10台都没问题,只要再加1台机器,必报错,(为了以防万一,我用了两组不同的socket)
可是问题依就,(许可协议等肯定没问题,两台sqlserver,一台为无限0,一台为255)
后来我在第11台机器上用delphi的运行状态运行,就出现大家所看到的错误。
说句心里话,我真的搞不定了,(主要是在这方面没什么经验),其实最让我搞不懂的是
怎么会报错到Scktcomp.pas中,我靠!
还有我server端运行的是win98,好象没有什么许可协议。
to Fenix
你说的话到提醒了我,的确,并不是所有的机器一起报错,有先后顺序,好象是写
sqlserver数据库时出错,但许可协议(包括sqlserver)又没问题,怎么会一超过10台就错,
我实在不懂,(在此之前都一切正常,完全正确,所有有关数据库的操作也都正确.)
各位大哥,救救小弟吧!!!如能解决,小弟重谢!!!

 
‘后来我在第11台机器上用delphi的运行状态运行,就出现大家所看到的错误’
问题就在这里,看来是客户端程序的问题,如果是数据库相关,那么报错的
会是你的socket服务器或更上一级,而不会是socket客户端。如下:
(socket客户端)-->(socket服务器)-->(数据库服务器).
检查你的socket服务器设置和客户端设置。
 
把服务器的threadcachesize改为11并继续尝试。
 
你的SOCKET连接是同步的还是异步的?
 
后退
顶部