广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 6468 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
mok789
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][求助] 有关于winsock传档(使用C++)
   各位高手大家好,最近我们老师介绍有关Winsock的传输协定,在介绍完之老师要我们写一个可以传输档案的Socket,老师叫我在
   <===基维百科中搜索有关winsock,就能找到相关的例题,我也下载来看,好不容易已大概知道,没个function大概的程式,但我发现几个问题,我说明的CODE我就PO出来 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾教育部 | Posted:2009-12-11 14:03 |
totsi
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x53
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

1.改connect的对象IP就可以了。Ex:IPsaServer.sin_addr.s_addr = inet_addr( "192.168.1.1" )
但请确定远端有用相同的IP与port在进行listening。

2.我没有看程式内容,不过一般client你是不需要指定IP给他的,只有server在进行bind与listening的时候,你需要指定IP。所以当你client要连向server的时候,你的确是要指定server IP给client,不然client是不知道server的IP是多少。除非client内部有server的清单,或是client可自动去寻找server,这样才不用指定IP给他。

3.我不是c++的强的高手,只是个打杂小弟而已,只是刚好最近也在碰这些东西。其实档案也是由一堆文字(ASCII)或数值(binary)所组成的。所以你只要会传字串,那么传档就只是把档案内的文字读进来,然后将其当字串传出就好。然后再接收端写入到所指定的档案内即可。当然Binary也是可以用相同的方式去做,且binary的传档方式会比较通用,可支援各种格式的档案。

  唯一要注意的是读写档与资料传输时如有发生遗失的例外处理,其他的就与一般常用的传字串的方式一样。

在c++底下,winsock的send与receive并没有将string与binary分开(以前玩VB的时候印象VB.net有将Sendstring与Sendbinary分成两个函式来使用)。所以只需将您所要传输的资料cast成char*给send就可以了。

这边要传档的话,会建议您使用struct来传那些资料,这样在处理上也会比较方便。至于要怎么把struct丢给send用的话,一样用cast (char*)就可以了。

因为最近被压榨的很严重,所以就没办法提供sample了。 表情

希望对您有帮助 表情


[ 此文章被totsi在2009-12-21 11:58重新编辑 ]

此文章被评分,最近评分记录
财富:50 (by 三仙) | 理由: ^^ 因为您的参与,让程式设计更容易!!


恩...
献花 x1 回到顶端 [1 楼] From:台湾中华电信 | Posted:2009-12-14 08:45 |
mok789
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢高手的回答︿︿
--------------------------------------------------
socket的中间程序我都先跳过,直接到传送那

把档案打开->转成二进制->放入阵列->传送出去(一直传到阵列中没DATA) = 传送
收到DATA后->把二进制还原成档案 = 接收

我在想我是不是一次改太多了,不知道有什么方法,可以验证以上的个个步骤


献花 x0 回到顶端 [2 楼] From:台湾教育部 | Posted:2009-12-15 16:43 |
mingtw
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x6
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

Comm Operator 应该可以帮你做一些简单的传输测试.


献花 x0 回到顶端 [3 楼] From:台湾中华电信 | Posted:2009-12-16 09:24 |
totsi
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x53
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

还有如果要自己做测试的话,最简单的就是自定档案格式,还有一个parser。
传完档后用自己的parser去验证格式是否正确,以及内容资料是否可读出来就知道了。

大概一个for loop就可以做完所有的事情了吧

格式部分可以重复,只是你要去计数说传档前有几个,收档后的结果是否与传档前一致。

以上是找不到现成软体可用的偷吃步的方法。XD

希望对您有帮助。 表情


恩...
献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2009-12-17 09:06 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.070877 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言