平板电脑(iPad版/ Android的) - 服务器通信协议

我要建立一个客户端 - 服务器应用程序。 这里的客户端是一台iPad(或基于Android的)平板电脑。 服务器是一个正常的PC。 两个客户端和服务器(使用WiFi)连接到相同的网络。

是否有一个标准方式(协议)的客户端和服务器之间的通信? 是否有可用于减轻这种通信的任何框架?

谢谢

--------------解决方案-------------

答案取决于由你所说的“服务器”,“客户”和“协议”中定义。

从技术上讲,答案是“是”; 从实际情况来看,你正在寻找的被称为“插座”,但对于协议的事情的框架可能会变得复杂。

协议是管理数据交换,也就是说,一套用来请求/提供服务的规则(参见IETF网站上的标准的人名单)语法结构。 插座,在另一方面,提供你只是一个通信信道,以从一侧到另一带上的字节和在其上的顶部,以实现协议你是必需的。 好消息是,插座是独立的语言,你可以将异构设备(新iPad /安卓/ Linux / Windows的)之间的消息。

在Java中使用的插座很容易(我正在很短的在这里)

服务器端

ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
InputStream is = s.getInputStream();

客户端

Socket s = new Socket("server.address", port); // same port as above
OutputStream os = s.getOutputStream();

当您使用os.write写的东西()相同的字节将被is.read读取(),怎么你写的操作系统是您的协议的执行情况。

本主题涵盖(对于Java语言)很好由布鲁斯Eckel的“思考中的企业Java”,您可以访问数字版是免费的。 在C / C ++ / Objective C的事情比较复杂,但你可以很容易谷歌的教程。

每个服务定义了自己的协议,你应该决定是否对现有的人会做,或者你必须定义自己的,取决于你想要在两个设备之间实现哪些服务。

如果,在标准方法中,PC扮演着服务器的角色,客户想要从它的信息,你可能要考虑使用HttpURLConnection的安装(非常)轻量级的Web服务器和访问数据。 这是一个包装与HTTP协议的管理接口已经实现。 当心,这是Java; 没有“标准框架等”C / C ++,老实说,我还真不知道目标C.

请,要还注意以下事项:

  • 如果客户端和服务器具有不同的体系结构的二进制数据交换可能会痛苦,更好地定义你的协议作为使用Base64或者你可能想实现一些其他的方法字符串(如SMTP)和编码/解码的二进制序列
  • 为了连接两个套接字客户端必须知道服务器的IP地址; 如果你正在运行DHCP WiFi网络,那么你还需要实现一个发现阶段为您服务

作为最后一个侧面说明:“客户端”和“服务器”只是标签,你把通信实体取决于谁在请求服务/信息(客户端),谁提供它(服务器)。 通信是在现实对称的,你可以用相同的结构/功能/代码的两个端点。

你的意思是想在游戏中发生的事情,如在MAC专卖店padracers? (iMac电脑是服务器和ifones是客户端。你开车无聊的车,周围用iPhone手机的方向盘iMac电脑屏幕上。)

非常概括地回答你的问题是NO,你必须发明和使用自己的协议没有现成的使用的解决方案

你提到的iPad。 如果你正在处理中的Mac / iPhone / iPad的宇宙中,你最好的选择,如果你一无所知的网络是先从“的GameKit”,这是非常容易使用。 你可以找到任何数量的广泛ifone开发商多科全面工作的GameKit例子。 它应该给你任何麻烦。

于是。 实际上在服务器端,你的信息 - 用你自己的幸福的协议 - 会出来这样的,

// the message arrives and you then do this...
[data getBytes:&getMe length:sizeof(CommsProt)];

而在客户端发送邮件,你这样做......

NSData * data = [NSData dataWithBytes:&sendMe length:sizeof(CommsProt)];
// ...now send that data using GameKit or whatever system you end up with

你将基本定义协议,数据至少块,像这样:

typedef struct _CommsProt
{
BOOL happyThing;
someThings wotJustHappened;
float happyValue;
float anotherHappyValue;
// etc
}
CommsProt;

令人高兴的是,这是非常简单的。 因此,(A),你必须决定某种(简单)网络层。 与的GameKit开始,如果您使用的是iOS。 该(B)后,才使像上面的例子一个简单的数据协议,你离开 - 祝你好运!

一些注意事项...

(一)由于达里奥指出,“客户”和“服务器”是指基本上没有什么。 你可以在任一方向上发送的信息(例如“CommsProt”以上)的手袋。 如果你要想到的,并参考之一,最终作为服务器(特别是如果你有一个枢纽型排列),这很好。 (顺便说一句,通常你可以在每个方向上使用不同的数据结构,这是完全正常的。)

(ⅱ)关于插座。 如果您在联网获得巨资,你将不得不面对插座和编写自己的插座代码。 然而,它很可能,你可以选择一个网络层,你甚至从来没有不得不说的话“套接字”! 的GameKit和Bonjour例如完全负责处理插座的你,和对方很困难的问题,它是找到你的客户端/服务器之一。 如果你是新的,我建议你完全抛开插座就目前而言,并使用系统,如的GameKit(或者是windose相当值)作你的网络层。

(三)事实上,起初只是用一些非常简单喜欢的GameKit,当你弄清楚你的协议和所有其他的头痛。 后来,如有必要,你可以重写网络层,或者切换到你听说过一些其他的包。 令人高兴的是一切行动的代码示例上面将保持不变,只有网络层将发生变化。

((四)BTW只是为了记录 - 你提到的WiFi的GameKit,最方便的包装,是完全不可知的物理层,他们照顾它为你GK将正常工作,不过划圈连接 - 蓝牙,以太网, 随你!)

分类:机器人 时间:2012-01-01 人气:0
分享到:

相关文章

  • 最佳协议的客户端/服务器通信,从PHP / Perl来C ++ / Qt4的 2014-08-25

    我是一个开源亭管理系统,Libki的作者. 目前的版本,虽然功能,是非常对我的学习经验. 我工作的一个完全重写和我有一个很难决定使用什么协议. 服务器将被写入PHP或Perl. 最有可能的PHP,因为我需要支持一些不常见的协议,该库软件的使用,(SIP和南京化学工业园区). 到目前为止,我只找到一个PHP SIP2库. 客户端是用C ++ / Qt4的. 我期待在RPC和REST客户端/服务器通信. 我发现RPC客户端库的Qt4和REST已经是的Qt4库的一部分. 是否有我错过了一个替代? 到目

  • Android客户端服务器通信混乱 2013-12-09

    项目描述:我不得不在机器人从GPS获得的纬度和经度的申请,并识别服务器转发自己的位置. 在服务器端应该有网页,不断地从Android应用程序接收消息并显示在谷歌地图上的位置. 假设有在不同的地方,使我们的应用程序运行的10款Android设备. 在服务器端,我们必须在设备的位置上显示谷歌地图10个标记. 我做了什么:我已经在Android中它得到纬度和GPS龙的应用程序. 我熟悉Android上的套接字编程. 我实现了在具有谷歌地图,并显示标记服务器端的网页. 混乱: 我怎样才能让一台服务器?

  • 客户端/服务器通信Java标准 2013-06-03

    什么是客户端/服务器或P2P通信的"官方"的Java API? Java RMI的? 其他一些网络API? 这是官方的网络API 为 SE和EE标准? 我敢肯定的答案很具体情况而定,所以让我们来看看几个例子: 您有安装在2个机器2摆动客户机和连接到同一网络(或互联网),并且希望它们中的发送以外的原语,如整数4或一些POJO,像一个"窗口小部件"的对象 同上#1,但一个Swing客户端和一个完全兼容的Java EE后端之间(执行管理的bean,应用服务器,整个九码)

  • 使用XML的客户端服务器通信 2012-02-05

    我需要做的基于XML的客户端服务器交互. 按我的知识,通过XML在客户端服务器通信的步骤包括: 1. client prepares the xml 2. transmittal of the xml 3. server processes the xml 客户端可以通过XML文档发送请求到服务器. XML解析器在服务器将解析XML文件并将信息传递给服务器. 如果是这样,将是什么XML解析器到服务器的输出是什么? 如何使用XML解析器在服务器用于此目的? 什么将是从服务器的响应格式客户端(是否可

  • java的WS使用证书客户端服务器通信,我应该用什么框架/ API的? 2012-04-03

    我有直通的WebServices简单的客户端服务器通信. 现在,我使用javax.ws.*和端点类(它是一个默认的实现?)来创建服务器端和Netbeans创建客户端. 我对证书等.我希望客户使用(私?)证书签名(加密?)消息的基本知识,让服务器知道(可以识别),其特定客户在呼唤. 所以我必须生成私有证书客户和公证书的服务器? 哪些API /框架(流行语像JAAS,WS-Security的,XWSS,TLS)我应该使用? 也许只是TLS可能足以是什么? javax.ws * - 它是由Sun的参考

  • HTML5 AJAX客户端 - 服务器通信和安全 2012-08-08

    感谢你今天的帮助. 我创建一个HTML5游戏,需要一些帮助确定客户端服务器通信的最佳方法. 我试图避免socket.io的原因,我不能提了. 首要的事情是,应用程序必须是安全的(即不开放给JS注射),同时最大限度地减少服务器负载尽可能 据我所知,Ajax是这样一种方法和jQuery有在其图书馆一些简单的Ajax方法. 我不想找任何代码,只对什么是最好的方式去了解这个建议. 让我提供以上简单的例子 我有1格,2个按钮. 硬币的DIV显示#,第一个按钮添加每次被点击一次1个硬币,第二个按钮是升级币按

  • Apache的MINA的Java TCP客户端服务器通信 2012-09-03

    我想共同使用Apache美娜通信TCP客户端服务器通信. 谁能给的代码? 我找不到它的任何人....谷歌是没有找到它. 我想送,并通过米娜免费获赠短信. 所以请帮助我.... --------------解决方案------------- 它是在服务器端很简单 SocketConnectorConfig SOCKET_CONFIG = new SocketConnectorConfig(); IoFilter charsetFilter = new ProtocolCodecFilter( ne

  • Windows Phone 7的客户端服务器通信 2013-04-22

    我想就WP7客户端服务器通信应用.. 我看到在建立客户端服务器通信类,如WebRequest的,HttpWebRequest的,和WCF术语. 我现在需要建立2个简单的应用程序. 每个人都应该做的请求的不安全的方式,使提琴手可以捕捉清晰的文本数据,并揭露被移动数据. 而另一位应该是相同的解决方案,使用安全介质,它那张加密或提琴手不能捕捉到它. 有人可以帮助我在这? --------------解决方案------------- 因为这个问题是比较通用的,我只能推荐使用HttpWebRequest

  • Android的socket编程:客户端服务器通信? 2013-09-27

    我试图用socket来开发客户端服务器通信: package com.exercise.AndroidClient; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; imp

  • 其中客户端 - 服务器通信的方法? 2014-03-15

    基本上,我需要一个双向的客户端服务器通信(渣),其中客户端调用服务器上的方法,还需要得到"回调"如果在服务器的特定事件发生. 该方法具有过问相当复杂的输入和输出参数和lateron这将是很好,包括身份验证系统. 哪种方法会适合我的要求? 我已经建立与RMI的原型,但我读了存在的一些问题特别是对"回调"的时候,C / S在不同的网络. 此外,我想避免JAX相关技术,监守在参数我复杂的数据结构. --------------解决方案------------- 你有没有想

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.580 (s). 10 q(s)