3338|6

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

pda 与远程pc通信问题 [复制链接]

小弟最近在做一个pda与pc 的通信问题,最终要解决的问题是将pda中一xml文件上传给远程pc服务器。
我现在做的测试就是用socket实现pda与pc间的简单通信,代码如下:

pda端:
                 TcpClient Client = new TcpClient();
                 Client.Connect(IPAddress.Parse("202.114.171.104"), 2005);
                 string senddata = textBox3.Text.Trim();
                 string recvdata = "";
                 byte[] buffer = new byte[1024];
                 buffer = Encoding.Default.GetBytes(senddata);
                 byte[] inbuff = new byte[1024];
                 Client.GetStream().Write(buffer, 0, buffer.Length);
                 while (Client.GetStream().DataAvailable == false)
                        Application.DoEvents();

                 if (Client.GetStream().DataAvailable == true)
                       {
                              Client.GetStream().Read(inbuff, 0, inbuff.Length);
                              MessageBox.Show("3");
                              recvdata = "服务程序已经成功收到指令,在" + Encoding.Default.GetString(inbuff, 0, inbuff.Length);
                              MessageBox.Show(recvdata);
                       }
                  Client.Close();


pc server端:
                TcpListener Listener = new TcpListener(IPAddress.Parse("202.114.171.104"), 2005);
                Listener.Start();
                Console.WriteLine("正在 202.114.171.104:2005 处侦听.....");
                while (true)
                {
                    Socket s = Listener.AcceptSocket();
                    string data = "";
                    int byterecvd = 0;
                    int totalbytes = 0;
                    byte[] recvdata = new byte[1024];
                    do
                    {
                        byterecvd = s.Receive(recvdata, 0, 1024, SocketFlags.None);
                        if (byterecvd > 0)
                        {
                            data += Encoding.ASCII.GetString(recvdata);
                            totalbytes += byterecvd;
                        }
                        Console.WriteLine(data);
                    } while (byterecvd == 1024);
                    string response = "this is server";
                    Byte[] senddata = Encoding.ASCII.GetBytes(response.ToCharArray());
                    s.Send(senddata, senddata.Length, SocketFlags.None);
               }

    可是这样总是通信不成功,提示错误为:Unable   to   write   data   to   the   transport   connection   ,不用write用send也是不行的。

    但是,我试过将pda端的程序复制重写为一般应用程序(不是智能设备应用程序),结果是可以通信的。难道是pda与pc通信有特别之处 ?希望高手能够帮小弟解答下,跪求……

最新回复

不设置固定IP也可以连接的. 在send数据之前,socket是否已经连接上了? 或者,你试试异步的连接.  详情 回复 发表于 2010-4-28 11:36
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题是PDA没有设置固定IP,你最好搞个路由器,让PC和PDA都连接它,然后设置一下IP,就OK了!
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你的PDA有Ethernet?还是通过GPRS连接呢?
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

4
 
我想也是IP的问题
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 sunrain_hjb 的回复:
你的PDA有Ethernet?还是通过GPRS连接呢?


我的pda是用微软的ActiveSync来连接电脑,通过这个电脑来同远程pc连接的……
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 chenhong0716 的回复:
问题是PDA没有设置固定IP,你最好搞个路由器,让PC和PDA都连接它,然后设置一下IP,就OK了!


我的pda是用微软的ActiveSync来连接电脑,通过这个电脑来同远程pc连接的,这样pda都能上网,为什么不能连接远程pc呢?那这种方式的话怎么才能与远程pc连接呢?
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
不设置固定IP也可以连接的.
在send数据之前,socket是否已经连接上了?
或者,你试试异步的连接.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表