黄汉升政治仕途:socket连接不上服务器

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 03:03:07

socket连接不上服务器

我在一台PC上开了一个SOCKET监听(这个PC又固定IP,程序做成了一个windows服务),我在家里的PC上做了一个SOCKET客户端去连接都是可以连接的,但是我用手机就是连接不上。
GPRS是打开了的,不知道是怎么回事
上面测试的手机不是3G手机,所以要打开GPRS,我还有一个手机是3G的,对于3G手机应该不需要连接GPRS才对吧,但是也连接不上,PC上所有防火墙全部关闭了。
有没有哪位大侠做过呢,非常感谢!还有我的手机老是弹出“无法获得由路由器所指定的IP地址。请稍后重试或在'网络'设置中输入一个IP地址。”,我的手机是三星I728的,不知道有没有朋友遇到这样的问题,但是我访问网页是可以访问的,不知道我的SOCKET连不上会不会与这个有关。但是3G那个手机是没有这个问题的,也不需要打开GPRS,但是也连接不上。这个PC有固定IP, 是公网ip吗? telnet端口可以通吗? 测试程序的时候, 拨号上去了没有, 可以打开网页不?你的帖子貌似已经给你回过了,还让你看cmwap和cmnet,你还是这么问。这样不好回答(要回答你至少分2种情况)。
先说服务端pc上的socket吧,如果你在家里能连接,说明没问题了。
再来说手机端:你说能上gprs,你必须知道,你上的是cmwap还是cmnet,就是这两种情况.
1、cmnet的话,你就跟在pc创建socket一样原理,直接可以连接该固定ip的服务端程序。
2、cmwap的话,你必须使用10.0.0.172代理才能连接上,当然,还有一个关键的问题,你的PC(固定IP)必须是移动cmwap代理网关要放行才能做到。以前好像要到移动注册才可以,现在我碰到好像不用。你一直说你能上gprs(之前你问时候也这么问),说明你对cmwap和cmnet还是没弄明白。回4楼的朋友,可以确认是cmwap,我设置过10.0.0.172代理的。
cmwap和cmnet以前确实没怎么搞明白,不过上次你跟我说过之后我仔细去看了一些资料现在基本上是明白了。确实非常感谢4楼的朋友,呵呵!!
你说“你的PC(固定IP)必须是移动cmwap代理网关要放行才能做到”,这个我不是很明白,因为这种应用应该很多的吧,难道每个都要移动去放行吗,我想正常情况下移动都是放行的才对吧!!!还有对于3G手机,走的是3G网络,这个事不需要GPRS的呀,但是也连接不上!我有2个手机,一个是公司拿来测试的,多普达S900的3G手机,电信给了一个3G卡的
还有一个是我自己的,三星的,这个要连接GPRSsocket通讯需要走cmnet, cmwap请使用http方式, 移动TD-SCDMA 3G是走NET方式的但是我连接www.baidu.com的80端口是可以连接上的啊,同样去连接我的服务器就连接不上了。会不会是你电脑防火墙的问题,为什么家里能连上???回11楼的朋友,家里能上是我用家里的PC连接可以,这个就说明我的SOCKET服务器监听是没有问题而已。
刚才居然用手机也连上了,我什么都没有改,都不知道是怎么回事了。搞不好过段时间又连不上!你能连接www.baidu.com 80端口,确定吗?会不会是wap的推送页面?你把接收到的数据写文件看看是不是百度的首页。
如果你现在已经能连接上你的服务器,并且能通信,我以下的推断和建议可以忽略。因为我不知道你现在状况。
1、你确定是wap连接,不知道你的10.0.0.172是指手机上的设置还是你程序上socket的参数。
2、你socket必须先连接10.0.0.172,然后把数据(http协议包数据)发送到10.0.0.172,这个wap网关会根据你http协议中的host和port,把数据转发过去。详细可以到网上查找相关的文章。连接服务器的代码如下:
private static void Connect(string address,int port)
        {
            try
            {

                IPHostEntry IpHost = Dns.GetHostEntry(address);

                Socket s = new Socket(AddressFamily.InterNetwork,
                    SocketType.Stream,
                    ProtocolType.Tcp);
                IPEndPoint point = new IPEndPoint(IpHost.AddressList[0], port);
                s.Connect(point);

                if (s.Connected)
                {
                    MessageBox.Show("Connection established");
                }
                else
                {
                    MessageBox.Show("Connection failed");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

并且是3G的手机,所以应该是不需要10.0.0.172的吧,我现在主要是要先连接上,只要能连接上的话我想发数据就没什么问题了。连接的时候用的Connect("www.baidu.com",80)就能够连接上
但是我用Connect("121.15.134.106",11118)就连接不上了,这个是我的固定IP和端口15# heyu1000
如果是走cmwap方式, 你就不用考虑了, 不太可能连接上你自己的IP地址的
连接的时候用的Connect("www.baidu.com",80)就能够连接上
但是我用Connect("121.15.134.106",11118)就连接不上了,这个是我的固定IP和端口
heyu1000 发表于 2009-9-15 17:11


你直接connect不行的,没看你有通过代理网关。你可以ping 一下baidu的ip,把www.baidu.com换成ip看能不能连接上,我怀疑那是移动wap网关内的类似域名解析一样,把www.baidu.com指向wap内部一个地址,否则,你直接那样connet,没有代理,就是在移动的wap内部,没办法访问公网上ip的。你可以把cmwap看成是移动一个局域网络,必须通过10.0.0.172代理才能访问公网IP的!!!!!好像3G手机还需要设置cmwap吗,都不是走GPRS啊,不知道是不是我理解错误了!!18# heyu1000
你还是确认一下你到底设置啥方式拨号上网了, 3G手机是可以切换到2G网络使用的, 如走GPRS - EDGE方式上网你在手机上先“恢复网络设置”选一下,有时候拨号频繁了,也会出问题。

我用联通的3G和移动的GPRS都连过,没问题,联通的是PPP连接,移动的是CMNET的