-
我想问一下关于移动qq通讯部分是怎么实现的?5
我本身是做短信的,接触网络通讯,最近闲下来,想自己写个类似移动qq的东西,但在构思中遇到了问题。本身是想通过gprs联接自己的server但有以下几个问题
1.j2me是否支持通过gprs直接进行socket通讯? 我查了查貌似支持只不过socket貌似j2me有一套专用的socket,和之前做的j2se的socket有区别
2.server如何向已经连接的gprs手机终端发送数据?我在网上查了下,貌似gprs联接后所分配的ip地址是移动或联通内部的地址,而server接收到的地址也只是移动或联通的网关地址。那我server有公网地址,grps可以通过socket联接上,如果我的server要回复消息时怎么办?怎么路由到这个内部ip地址?
3.如果使用wifi进行连接后传送像server传送数据,我server怎么回传数据给通过wifi联接上网的手机????
4.移动qq是怎么解决这些问题的?我网上查说移动qq使用udp直连?谢谢各位!
问题补充:piao_bo_yi 写道我很久没做网络部分了,只能提供点思路。
1.闭着眼睛都知道有支持的SOCKET。他和J2SE的SOCKET区别在于底层通讯方式不同。一个是无线网络,一个是有线网络,当然不一样。
2.sever如果只能接收到网关的地址,那说明还得通过其他信息(除了IP)来判断客户端手机。就像在Internet下的端口映射机制,是靠IP+端口号来确定虚拟子网的主机的。所以应该有类似端口号的东西辅助判断。不过作为SERVER,是不需要知道子网内手机真实的IP的,这是一个你不用关心的黑盒子。
3.和问题2类似,你虽然实际和用WIFI连接的手机通讯,但是你看起来其实就是和无线接入点通讯一样。这是由内部机制来保证完成的,对你是无需可见的。如果想知道AP怎么和这些手机通讯,可以查IEEE下802.11.a/b/g协议细节,但这不属于应用层关心的范围。
4.我想应该不能叫UDP(个人猜测,如果他真这么叫,我也无语),这专有名词不是随便篡改用的。不过应该是提供的服务类似,不保证可靠数据传输。
总结一下啊,LZ应该是对网络分层没有概念,网络基础学得不好。比如用电脑编应用程序,你不需要了解底层如何实现一样能编,因为他们提供了黑盒子服务。建议看下网络分层的基本概念,推荐一本书<自顶向下的INTERNET描述>,虽然不是专讲无线通讯的,但是网络里的好多基本原理都是一样的。
不好意思我半路出家搞计算机的,打小没学过网络。。。最近刚有这个想法,也不太了解网络传输。
但是我还是没明白第二点你说的。都知道是靠ip+端口,但是如果你是内网机器想访问到一定要走端口映射,但是并不是所有内网ip,网关都会给你端口映射的,跟现实组网一样的,并不是每个内网的机器都被访问到,只有被端口映射的才可以。所以我很担心移动的grps网关给我发送数据时的ip和端口只是他出数据的端口,这个端口并不能代表内网的那台机器。或者说我理解错误只有当serversocket才需要端口映射,clientsocket过来的这个ip+port可以直接发送过去而不需要端口映射?
另外关于4我看的那个也说的不清楚,貌似叫什么打洞技术?
2,3其实一样,我实在不明白他是怎么路由回去的,这是个基本问题,但我以前确实没想过。。。因为我以前做的都是公网ip---公网ip这种服务器的信息交换。。。所以突然想一下就迷茫了
2010年1月21日 10:55
1个答案 按时间排序 按投票排序
-
采纳的答案
我很久没做网络部分了,只能提供点思路。
1.闭着眼睛都知道有支持的SOCKET。他和J2SE的SOCKET区别在于底层通讯方式不同。一个是无线网络,一个是有线网络,当然不一样。
2.sever如果只能接收到网关的地址,那说明还得通过其他信息(除了IP)来判断客户端手机。就像在Internet下的端口映射机制,是靠IP+端口号来确定虚拟子网的主机的。所以应该有类似端口号的东西辅助判断。不过作为SERVER,是不需要知道子网内手机真实的IP的,这是一个你不用关心的黑盒子。
3.和问题2类似,你虽然实际和用WIFI连接的手机通讯,但是你看起来其实就是和无线接入点通讯一样。这是由内部机制来保证完成的,对你是无需可见的。如果想知道AP怎么和这些手机通讯,可以查IEEE下802.11.a/b/g协议细节,但这不属于应用层关心的范围。
4.我想应该不能叫UDP(个人猜测,如果他真这么叫,我也无语),这专有名词不是随便篡改用的。不过应该是提供的服务类似,不保证可靠数据传输。
总结一下啊,LZ应该是对网络分层没有概念,网络基础学得不好。比如用电脑编应用程序,你不需要了解底层如何实现一样能编,因为他们提供了黑盒子服务。建议看下网络分层的基本概念,推荐一本书<自顶向下的INTERNET描述>,虽然不是专讲无线通讯的,但是网络里的好多基本原理都是一样的。2010年1月21日 17:13
相关推荐
本项目"QT实现高仿QQ QT实现QQ界面"旨在通过QT框架来复刻QQ的经典界面,从而展示如何利用QT库来创建类似QQ这样的即时通讯软件的用户界面。下面将详细介绍这个项目可能涉及的关键知识点: 1. **QT Widgets模块**:QT...
在"Android应用源码类似QQ陌陌的即时通讯源码"中,我们可以看到客户端部分的实现。这部分代码通常涉及到UI设计、网络通信、数据解析等多个领域。UI设计上,需要实现聊天窗口、联系人列表等界面,并确保用户体验流畅...
基于MSP430单片机的红外通讯的实现方法自动化本科生毕业设计 标题:“基于MSP430单片机的红外通讯的实现方法自动化本科生毕业设计” 该毕业设计的主要目的是设计和实现一个基于MSP430单片机的红外通讯系统。红外...
在本文中,我们将深入探讨如何使用Qt框架来实现一个类似QQ的聊天应用程序,重点在于群聊功能。Qt是一个跨平台的C++图形用户界面库,它提供了丰富的API和工具,使得开发人员能够轻松构建功能丰富的桌面和移动应用程序...
在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、游戏以及移动设备应用时。...通过深入研究这个示例,开发者能够提升其在物联网和移动应用开发领域的技能,特别是涉及到无线通信的部分。
即时通讯软件,如标题所提及的“一个即时通讯软件类似QQ”,是计算机技术中的一个重要领域,尤其是对于C#开发者来说,这是一个挑战性但充满机遇的项目。C#是一种由微软开发的面向对象的编程语言,它在构建桌面应用...
在Android平台上实现高仿QQ的即时通讯功能,通常会涉及到一系列的技术栈,其中包括客户端的开发、服务端的搭建以及通信协议的选择。在这个项目中,开发者使用了XMPP(Extensible Messaging and Presence Protocol)...
在这个“Jquery实现数据左右移动Demo”中,我们将深入探讨如何利用jQuery来实现动态的数据展示,特别是在一个可能需要数据左右移动的场景,如轮播图或卡片式布局。 首先,我们需要理解jQuery的基本用法。jQuery通过...
在本项目中,"C# 视频移动侦测实现" 是一个利用C#编程语言构建的系统,它能够通过USB摄像头捕获视频,并且具备移动侦测功能。这一技术在安全监控、智能家居、无人零售等领域有着广泛的应用。以下是关于这个项目的...
一直想做个类似的IM功能, 看了一些学习视频, 查找资料,综合一下,就实现了个简单的 包括服务端和客户端 . 服务端CPP编写,目前是MAC上平台的工程,可以在LINUX下编写相应MAKEFILE编译 自己测试的是UBUNTU, 客户端...
即时通讯(Instant Messaging,IM)技术是现代移动通信领域中的重要组成部分,尤其在安卓平台上,它为用户提供了实时、便捷的信息交流方式。XMPP(Extensible Messaging and Presence Protocol,可扩展消息传递和...
《基于Android的移动公交查询系统的设计与实现》 在当今移动互联网时代,公共交通查询系统已经成为人们日常生活中的必备工具。基于Android平台的移动公交查询系统,以其便捷性、实时性和广泛覆盖性,为用户提供了...
在本文中,我们将深入探讨如何使用Qt的QGraphics模块实现一个可移动和缩放的矩形框。QGraphics是Qt库中的一个强大组件,它提供了一种高效且灵活的方式来处理图形用户界面(GUI)中的图形元素。这个示例项目...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现仿QQ的抽屉效果。MFC是微软提供的一种C++类库,它简化了Windows应用程序的开发,尤其是用户界面部分。抽屉效果,常在移动应用或现代桌面...
在本项目中,"网盘源码-实现部分功能(JAVA)" 是一个基于JAVA语言编写的网络硬盘(或云存储)应用的源代码。开发者已经实现了该系统的一部分核心功能,但仍有其他功能需要后续开发。这表明这个源码提供了一个基础架构...
H.264通过使用更复杂的编码算法,如运动估计、熵编码和多参考帧等技术,实现了更高的压缩比,这对于有限带宽下的移动通信至关重要。在Android平台上,开发者可以利用开源库如FFmpeg来实现H.264编码和解码,以实现...
本项目通过`SurfaceView`实现图片的缩放、移动以及添加标记功能,这在许多应用场景中都非常实用,比如地图应用或者图像编辑工具。同时,项目还包含了发送电子邮件并附带多个附件的功能,这在日常的移动应用中也是...
在C#编程中,图像处理是一项常见的任务,其中包括图片的放大、缩小以及移动等操作。在Windows Forms或WPF应用程序中,我们可以利用控件和事件来实现这些功能。本篇文章将详细讲解如何利用滚轮事件、单击按钮事件来...
本文将深入探讨如何使用C#语言进行ABB机器人的二次开发,实现与其通讯并进行有效控制。 首先,要理解C#与ABB机器人通讯的基础是ABB的Robot Studio软件。Robot Studio提供了SDK(Software Development Kit),包含了...
本文将详细讨论如何实现图片的中心放大、缩小、移动以及鼠标拖移功能。首先,我们需要理解Java中的Swing或JavaFX库,这两个库提供了丰富的组件和工具来创建图形界面。 1. **Swing组件**: Swing是Java的标准GUI库...