关于在Internet上用Socket连接时接收数据的一个问题!!!全部分数奉上!!!(170分)

  • 主题发起人 主题发起人 dyfh
  • 开始时间 开始时间
D

dyfh

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Internet上的两台机器用两个Socket程序连接,从一台机子向另一台发数据,我是
每次发1K,并在接收端以最后一次小于1K为结束标志,可是在却因为并不能保证每次都能
成功发送1K而不断出错,请问各位前辈高人,有什么办法可以让接收端获知文件传送已结
束???
如果有几个文件同时发送,又如何让接收端Socket区分??
 
干吗一定要自己把文件切成1k1k传呢? 一次发送不就成了? 文件是否发送结束就是
TCP协议的事了, 和你无关.
 
干嘛不首先发送文件长度
 
我记得Socket最大一次只能发不超过8K的数据,没错吧?所以我把数据切开来发
 
先发文件长度?我试试看
 
分两次向服务器发送数据,第一次发送数据,第二次发送结束标志。也就是说发1k数据后
再发一次文本高速服务器上一次已经发完。
服务器在收到客户端发来的第一次数据后暂时存放在缓存中,等接收到结束标志后再将第
一次接收到的数据写入文件。
这样做的方法即可以保证传输的准确性,还可以做到断点续传的功能。
 
我可以给一个用winsock写的例子给你!
不过是用vc写的:)
给我你的邮箱
lwlnic@263.net
 
自定义一个结构,
StateTag: Integer;
FileContent : char[XXXX];

发送结构。
 
to lwlnic:
我的信箱是:dyfh@263.net
 
关于:Socket在发出大数据量的包就不稳定的方面,我没有什么经验。

但是你的问题完全可以用比较土的方法实现。可以参考一些网络协议的方法。
如:在你的数据前加一个头,并且加一个尾巴。头中至少有ID,尾巴中有结束标志,其他的
随你定义,一个头和尾巴不用很长。而你接收到以后,进行根据头尾中的标志进行处理,爱
怎么干就怎么干,问题解决了吧?

另外我从来没有遇到发大包不稳定的情况,我发的包也有几K大,有没有高手来介绍一下?

&*&
 
多人接受答案了。
 

Similar threads

后退
顶部