当SmartPhone与PC连接后,用本地Socket进行通信

这里我不是介绍Socket,而是介绍当手机同计算机连接后,如何建立本地Socket连接,而不是建立GPRS或者WAP方式的广域网Socket连接(关于如果建立GPRS或者WAP Socket连接我以后再介绍)。

进行本地Socket连接的时候,选用什么样的Socket的模型(异步、同步),我也不做介绍。但是,我要告诉大家SmartPhone和PC分别作为Socket Server时候,绑定的本地IP是什么。

一、以SmartPhone作为Server

        我们这里不讨论,以SmartPhone作为Socket Server是否合理,只讨论如何让其成为Server。其实,以SmartPhone作为Server,与PC端的Socket编程是一样的,我们只须如此获取本地的绑定IP:

        IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
        IPAddress ipAddress = ipHost.AddressList[0];

        其中,Dns.GetHostName(),为获取手机名(这里也可以通过注册表项获取)。

        以SmartPhone作为Server主要就是要获取本地的绑定IP,我获取的IP为169.254.2.1,再有如果手机未与计算机连接是无法获取IP的。

二、以PC作为Server

        以PC作为Server其实更简单,但是我们应当注意,在计算机接入局域网的情况下,获取本地绑定IP的时候,我们可能获取一组IP。这就需要我们判断哪个IP才是计算机与手机连接的有效IP,我获取的IP为:169.254.2.2。我认为微软为手机和计算机连接的虚拟IP为169网段的,所以我们可以通过169来判断这个有效IP。具体做法如下:

        IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
        IPAddress ipAddress = GetDesktopIpAddress(ipHost); // IP获取函数

        private IPAddress GetDesktopIpAddress(IPHostEntry ipHost)
        {
            IPAddress ipAddress = null;
            if (ipHost.AddressList.Length > 0)
            {
                for (int i = 0; i < ipHost.AddressList.Length; i++)
                {
                   
                    string ipAddrStr = ipHost.AddressList[i].ToString();
                    if (ipAddrStr.Substring(0, 3) == Global.Settings.DesktopIPMask)
                    {
                        ipAddress = ipHost.AddressList[i];
                        break;
                    }
                }
            }
            return ipAddress;
        }

          注意:当我们以PC作为Server的时候,SmartPhone无须知道PC Server的IP,我们可以通过一下的方式获得PC Server 的IP:

        public string getDesktopIP()
        {
            string m_ipAddress = "";
            try
            {
                IPAddress ipAddress = Dns.GetHostByName("PPP_PEER").AddressList[0];
                m_ipAddress = ipAddress.ToString();
            }
            catch
            {
            }

            return m_ipAddress;
        }

       关键字:PPP_PEER,通过PPP_PEER来取得PC Server的IP(也可以通过注册表项来获得)

       以上介绍的方式完全可以进行本地Socket通信,我只介绍了基本方式,至于大家可以写出什么样的SmartPhone/PC程序呢,就要看大家的想象力与编程功力了:) Good Luck!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值