Socket通讯,广域网数据传送与接收!!!(200分)

  • 主题发起人 主题发起人 大懒虫!!
  • 开始时间 开始时间

大懒虫!!

Unregistered / Unconfirmed
GUEST, unregistred user!
网络环境是internat网,服务器端放在某一城市的一台机器,这台机器的IP,是通过服务器做的映射。如,59.44.25.36
客户端在另一城市的一台能上网的机器上,
传输用,ServerSocket、ClientSocket
客户端想把一字符串发到服务器端,应该怎么做?
我用的是Socket.SendText(字符串);
不过主机网速不是那么完美,有的时候接不到数据,我应该怎么办呢,请高手指教。
如果我知道主机没有接收到信息,我可以再次发送,所以,我想知道
在客户端,通过哪些方式判断主机是否接收到信息,,
本人新手,希望高手帮助,我尽我所能给大家最多的分,,谢谢
 
以下思路都是在已建立通讯的基础上,要知道有没有接受到信息,很简单,
1。正常情况下,你应该在客户端发送消息时就设置一个TimeOut的时间延时,
在服务器在接受到消息后,记录消息片段,然后返回一个应答(如返回消息流水号)
给客户端。。。在该TimeOut时间内接受到应答消息,那么就完成一次消息
的发送和接受。
2。非正常情况,超时未接收到应答消息,这时可能有两种情况:
a。服务器没有到消息
b。服务器接受到消息却没有成功返回应答消息
那么就再发送一次消息,服务器上比对本次消息与先前一次的消息是否一致,
如果一致,则直接返回个消息流水号;如不一致,说明前一次的消息服务器
没有接收到,那么就记录消息片段,然后返回。

不知道我有没有说清楚,大家讨论讨论。。。
 
我也有过这种想法,可是我有如下问题:
.如果这样做,是不是就意味着客户端放两个控件,ServerSocket、ClientSocket,服务器也放ServerSocket、ClientSocket用来发送与接收,这种构架,对一服务器,多客户端有没有影响?
 
不需要。。。
Server端是通过多线程去接受消息的,不存在Server需要ClientSocket的说法。。。
Client端可以是多个,他们分别与Server建立Socket连接,同样的Client端也不需要
ServerSocket。。。
Socket套接字连接,有发送就可以有返回,即你用TCPClient发送了消息,
在这个Socket连接没有断的情况下,你可以同样用该TCPClient接受TCPServer返回的消息。
具体的实现你可以参考Delphi安装目录下/Demos/Internet/NetChat的实现方式,
它是由TCPClient给TCPServer发送了一个消息,TCPServer起线程接受消息并显示的一个
程序。
有不清楚的地方,我们再讨论。
 
谢谢你,我这就去看看demos,学习过,再来讨论
 
你看一看tcp协议的办法,会对你有启发,
大多数的可靠通信都是使用类似tcp三次握手的方式实现的
 
你有msn或者QQ吗,,能不能透露一下,我以前是做mis的,基于internet的传输,我还是首次做,有些问题,还是想不周全
 
用阻塞方式试试
 
to QSmile
什么叫阻寒方式啊,能不能简单叙述一下啊,
 
收到后马上回一消息
 
其实基于广域网数据传送与接收,一般速度都不会很理想,
除非网络条件非常之好,一般这样直接用Socket的通讯方式,
只能达到一般应用目的,想要达到比较理想的响应速度,
保证可靠传输等、达到企业级的应用,需要交易加速中间件,
如IBM的CICS等。
我们这样写的Socket通讯用在局域网通讯,效果较好。。。
 
Socket通讯一般默认为阻塞方式。。。
具体阻塞方式的解释,请在baidu, google搜一把,很多的。
 
我只想在现有的硬件环境中,能做到最好就行了,
也不需要真正的企业级那么安全,只要革命的热情不灭,丢一个,我再传一个,呵呵,
 
:)那NetChat已经改造一下就满足你需求了。。。
 
前两天刚给朋友整了一下这个代码,让NetChat的TCPServer返回个消息给TCPClient接收,
如需要代码,请留下Email地址。
 
to: terryapp
给我发一份吧(schao420@sina.com),谢谢!
 
后退
顶部