还是出现服务器100054错误,你们做过WEB服务器吗?(0分)

  • 主题发起人 左文明
  • 开始时间

左文明

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己做了个web服务器 ServerSocket在80端口侦听,当连接上的时候,
可以一直保持连接,我也可以发数据过去。定义好了信息头。然后就是正文。
可是在重复发数据的时候,用非阻塞的方式sendText(buffer)发送到了一定的数据之后,
浏览器就自动断开了。使用206(信息部分发送)代码也不行。
客户端就是IE5.0,在手动断开浏览器的连接的时候,服务器也会出现100054错误。
说什么不同步什么的。有人可以解决这个问题吗?
对了,有谁做个WEB服务器的,可以给我相应的源代码学习一下吗?
net_bug@263.net

注:我一个问题也没回答,却问了不少,快没钱了。是不是没钱了就不能问问题了?
呵呵,帮我一个~~
 
好像是连接断开,就会发生这个错误吧,
我做的服务器有时也会发生这种错误。
 
是IIS+MSSQL吗?
 
不是IIS, 是想自己做一个符合http协议标准的WEB服务器。就是要提供相应的接口,
能让别人在上面做2次开发。象开发ISAPI这样的东西。主要就是现在标准不明白。
是如何实现ISAPI DLL文件和服务器之间的交互的呢?而且还是在一个进程内。

还有就是SOCKET的连接在客户机(IE)断开的时候总是出错。为什么会出现这样的情况啊?
是错误100054,怎么样才能捕获和处理这个错误啊?在onClientDisconnect 和OnClientError
这两个事件都服务器端的TServerClientSocket的时间,并不是真正的IE断开时发生的事件。
我不知道该如何继续了。
 
我是用Socket编的时候捕获这一错误的,这是Win Socket错误,
不知道用控件如何捕捉
 
我至今无法解答这个问题。现在正在转向API,希望底层的函数可以解决这个问题。
过一段时间在说吧,你知道网上那里有这方面的书可以找来看的吗?我找的都是一些源代码
不清晰。
 
已经解决了出错问题,设定errorcode:=0就可以。

新问题,在浏览器地址栏里的汉字被编码成了16进制的%df%5c%34%23%ac%de的形式,
怎么在获得这些字符串还原成了汉字呢?我知道可以用ShowMessage(#$Df#$34#456#$78)这
样的方法输出汉字,可是怎么才能把这些字符串变为16进制的表示呢?又如何连接呢?
最后还要复制给一个字符串变量。才可以获得啊。
 
要做URL解码,Delphi中有一个internet控件好像是做这件事的,
我没试过。。
好像叫tnmurl..
查查关于url的rfc文档,我记得有一篇是讲这个的,
等我找到了,再给你。

顺便说一声,好像netscape是不做这件事的,
它直接将汉字传了过去。[?]
 
pan ying:
你好,以前说解码的问题已经被解决了,你说的没错,是TNMURL控件。谢谢你的回答。
目前我做的是一个聊天服务器,就是和新浪的差不多,又遇到了一个新问题,期盼解决:
就是在客户机器非正常断开的时候,服务器还保存有这个客户的Socket连接,但是其实
这个时候连接已经不存在。当对这个SOCKET进行读写的时候,就会出现错误,TCP是基于
三次握手协议的,当客户端断开的时候,会发送断开请求,这个时候我在
Socket_OnDisconnect这个事件中清除客户信息,释放内存的。当非正常断开的时候。
这些事情都不发生,就会出现读写内存的异常,我可以捕获它然后释放,但是对系统在线
人数的统计就会出错,而且整个系统都变的不稳定了。我想通过用定时器来定期清除不存在
的连接,但是无法通过读这个仍然存在的SOCKET的某个属性来判定它是否真正断开。用connected
这个属性也不行,一直是保持TRUE的,直到连接超时,DELPHI自己清除这个SOCKET。有什么
底层的函数可以解决这个问题呢?我知道UNIX服务器上面是通过定期刷新来实现清除死连接的。
 
接受答案了.
 
顶部