求助!用TUdpSocket实现文件传输

brbzhang 2007-05-02 06:17:23
我是新手,之前尝试了用TServerSocket和TClientSocket来编程实现:用户端输入主机IP地址端口然后请求连接,主机监听到请求后自动传送文件并将文件复制到客户端指定文件夹中.在TServerSocket和TClientSocket实现时老是出错,所以我想尝试用TUdpSocket实现,但之前没用过TUdpSocket,请懂这方面知识的高手指教
...全文
442 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2007-05-03
  • 打赏
  • 举报
回复
http://www.libing.net.cn/read.php/1133.htm
brbzhang 2007-05-02
  • 打赏
  • 举报
回复
我也知道UDP是不可靠的协议呀,但是我做的是一个VOD服务器,用来实时传送视频流,导师非得让我用UDP,真是百思不得其解!可能是考虑到UDP传输速率较高吧.
我设计的思路是客户端首先连接服务器,在连接成功后,在OnSend()中添加如下代码:
void __fastcall TForm1::UdpServer1Send(TObject *Sender, PChar Buf,
int &DataLen)
{
char *Buff="send";
struct sockaddr_in host
UdpSocket1->SendTo(Buff,4,const &host,0);
delete[] Buff;
}
服务器在收到消息后发送文件.
但编译时有这个错误:Declaration syntax error
UdpSocket1->SendTo(Buff,4,const &host,0);语法错误???
查询了一下帮助给出的SendTo函数原型如下:
int __fastcall SendTo(void *buf, int bufsize, const sockaddr_in &ToAddr, int flags = 0);
Description

Use SendTo to send a single packet of information over the network. Note that information in the packet is not checked for length, completeness, and such, which occurs at a higher level.
其中的const sockaddr_in &ToAddr我的理解是服务器的地址,sockaddr_in是结构体,假如现在服务器的IP为"10.10.224.30",象我原来写的那样"struct sockaddr_in host"而并没有具体定义,sendto函数有怎么知道将消息发送到那里呢???
请高手指教!!!!!!
我不懂电脑 2007-05-02
  • 打赏
  • 举报
回复
TUdpSocket实现不好,因为UDP是不可靠的协议,要实现可靠的UDP相当麻烦,没有经验最好还是不要做。
TClientSocket来编程实现文件传输很简单,以前做过。你仔细调试一下程序应该就能解决问题了。
___NULL 2007-05-02
  • 打赏
  • 举报
回复
TServerSocket 传输文件,估计是你没有验证接收才导致错误

用 UDP 传文件,说句实话,不现实
建议用 IdTCPServer + IdTCPCliet 可以直接传输流,很简单,比 UDP 可靠的很多
IDE安装目录内有 Demo 可以供你参考
meikeer 2007-05-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20041109/10/3534580.html
看来这个方法也很麻烦,关注帮顶

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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