我目前正处于论文项目的研究阶段.
我的项目是移动设备的订票系统,我选择定位Android.
我预计需要一个带有中央服务器的客户端/服务器架构,因此我目前正在研究Android如何与这样的服务器进行通信.服务器将授予客户访问票务信息的权限,客户端将向票证预订发送有关票务预订的信息.我正在寻找服务器的Java EE,因为Java是我最有经验的语言.
我知道,安卓自带的java.nio和java.net,以及一些org.apache包,但我也在寻找库/技术,将有可能与Android使用.
到目前为止,我还没有在互联网上找到任何有用的东西,所以我看到了SO的建议.
具体来说,我有兴趣知道:
理想情况下,由于我的项目的重点不是服务器和客户端之间的通信,我可以使用现有的中间件来处理通信,但我已经准备好应对最糟糕的情况,即必须自己编写.
据我所知,数据包通过的所有MAC地址都在数据包中.这是因为进入某个路径的每个数据包也应该以类似的路径返回.那么,如果服务器的路由器知道客户端的mac地址(所有这些),为什么服务器页面(如aspx)不能拥有这些信息呢?
请解释一下.(不要只是告诉我,我错了).
如果我理解正确,客户端会发送一个包含其MAC地址的数据包.当数据包通过代理(如客户端路由器)时,代理的地址也会添加到数据包中.等等.
以下是Wikipedia关于TCP/IP数据行层的片段:http:
//en.wikipedia.org/wiki/TCP/IP_model#Data_Link_Layer
数据链路层用于在同一链路上的两个不同主机的Internet层接口之间移动数据包.可以在用于网卡的软件设备驱动器以及固件或专用芯片组上控制在给定链路上发送和接收分组的过程.这些将执行数据链接功能,例如添加数据包标头以准备传输,然后实际通过物理介质传输帧.TCP/IP模型包括将因特网协议中使用的网络寻址方法转换为数据链路寻址的规范,例如媒体访问控制(MAC),但是该级别以下的所有其他方面都隐含地假设存在于链路层中,但是没有明确定义.
我编写了一个简单的Java应用程序,它使用套接字与自身的多个实例进行交互.第一个实例自动承担服务器的角色,侦听特定端口,并且所有后续实例都连接到它.
我遇到的问题是Windows防火墙弹出询问我是否要取消阻止该程序"接受传入的网络连接".问题是:如果您将应用程序阻止,则无关紧要,因为应用程序的实例始终位于同一台计算机上,因此它始终有效.
我的问题是:我能否以某种方式告知Windows我甚至不希望接受传入的网络连接?
有没有一种实用的方法让我们慢慢将WinForms应用程序演变为WPF,而不会为奇怪的互操作场景创建支持梦魇?
背景资料:
我们有一个庞大的战舰灰色WinForms应用程序,大约60-75个用户的内部组使用.我们开始遇到可以看到在WPF中使用应用程序带来好处的地方,但这还不足以证明大型项目完全重写它的合理性.应用程序中的所有屏幕都是自包含的WinForms用户控件,而WinForms应用程序只是一个处理菜单,打开/关闭表单,提供一些共享帮助方法等的shell ...
到目前为止,我们最好的想法是将shell应用程序转换为WPF,然后在其中托管WinForms用户控件.我们认为我们可以随着时间的推移转换用户控件,将这些更改与具有足够业务价值的计划相结合,以支持额外的工作.我担心互操作性能如何以及它将如何影响性能.我也关注我们如何过渡到应用程序的新外观.让shell应用程序看起来很时髦,然后在其中托管旧的战舰灰色用户控件似乎很奇怪,在WPF中创建shell应用程序并使其看起来就像在WinForms中一样.
如果其中一个Caliburn,Prism或其他类似的框架可以缓解过渡,我们也愿意探索这些选择.
所以我有这个完全在客户端上运行的游戏.除了下载初始脚本以玩游戏之外,没有服务器交互.无论如何,在游戏结束时,我希望客户端将我应该在服务器数据库中更新的分数发回给我.现在我开始接受这样一个事实,即地球上没有任何办法我可以将其隐藏起来并将分数保持不变.但我想知道,直到我能在多大程度上修改整个过程,黑客操纵正在发送的数据几乎变得不可行.我肯定不希望得分作为客户端机器的纯文本发送,我不希望我的服务器执行复杂的解密算法.什么是最好的方式,因此实现相当大的安全性,每个汤姆迪克和哈里不破解分数...我希望有人可以提供一个很好的小方法,我可以工作...... :)谢谢
所以我的理想结果应该是 - >得到一个不受信任的一方(玩家)计算(得分)的可信结果!
-编辑-
有人告诉我一些关于在图片获取请求中隐藏数据的事情.就像,我在画布上实现这个游戏(html5).所以他在比赛结束时让我告诉我从我的服务器上取一个游戏而不是图像,他们的请求应该包含哈希分数.我并不完全理解整个过程,但如果你能解释一下,那真的很高兴!:)
coda ^所以你可以很好地掩盖请求
shouvik我该怎么做!?
coda ^您可以撰写要提交的校验和.像12312312a12313a232是你的md5,其中包含分数.像画布一样将资产带进画布
coda ^ server.com/images/md5_hash_of_score/congratulations.png
coda ^你可以通过htaccess重写服务器端
我在Android中有一个应用程序可以从GPS获得经度和纬度.我想将这些lat和long发送到特定端口的服务器,并希望将服务器的响应发送到我的Android应用程序中.
请指明方向,以便我能够做到.
我最近决定参与一个非常重要的软件工程项目,该项目将涉及开发基于客户端 - 服务器的应用程序.我的计划是开发尽可能多的客户端:包括原生iPhone,Android和Blackberry应用程序以及基于Web的应用程序.
对于我的服务器,我打算使用VPS(可能来自slicehost.com)运行带有MySQL数据库的Linux.我的第一个问题是客户端与服务器接口的策略应该是什么.我的想法是:
使用PHP脚本进行基于HTTP-POST或GET的通信.
这是我非常熟悉的 - 从表单传递信息到PHP脚本,使用它并返回输出.我假设我想要将输出作为某种基于XML或JSON的字符串返回给客户端.我还假设我想为想要与我的服务器连接的客户端创建一个定义良好的API.
基于套接字的通信与PHP脚本,Java程序或C++程序
这个我不太熟悉.我使用过基本教程来创建脚本或创建套接字的简单应用程序,监听连接并返回数据.我假设使用此方法的通信数据开销远远少于基于HTTP的方法.我的梦想是有大量并发客户端在使用,所有客户端都在使用服务器/数据库.我不确定基于HTTP/PHP脚本的简单通信设计是否可以有效扩展以满足许多客户的需求.此外,我最终可能希望将服务器推送功能发送给由各种服务器事件触发的客户端.我也不确定哪种编程语言最适合这种情况.如果效率是一个大问题,我认为PHP脚本可能效率不高?
有一种普遍接受的方式吗?对我而言,这是尝试弥合我目前的一些技能之间的差距.我在PHP方面有很多经验,并且与MySQl数据库连接以提供动态网页.我也有很多开发本机iPhone应用程序的经验(但是没有任何基于服务器的重要通信).我也使用过Java/C++,并且开发了两种与MySQL接口的语言的应用程序.
我不希望我的客户向服务器发送/从服务器接收大量数据.与给定客户端事件的一组字符串相同的东西.
另一个问题:使用VPS - 好主意?我显然不想支付一个完全专用的服务器(slicehost提供的VPS起价为每月20美元左右),而且我假设一个VPS能够满足一些初始客户端的要求.随着越来越多的用户开始与我的服务器接口,我假设它可以迁移到越来越大的"切片",并且可能最终在必要时移动到完全专用的服务器.
感谢您的建议!:)
我一直在使用msdn上发布的以下代码:
http://msdn.microsoft.com/en-us/library/fx6588te.aspx
我知道在应用程序等待新客户端时,服务器应用程序未被阻止.
但是,这个应用程序(甚至套接字)可以处理多个并发请求吗?
如果客户端A和B同时连接会发生什么?
如果客户端A连接并且其请求的处理需要5秒钟,如果客户端B连接了一秒钟后,它必须等待客户端A完成才能开始处理吗?
或者客户A和客户B的请求是否会同时处理?
我已经通过在套接字侦听器代码中的接收/发送数据之间放置Thread.Sleep(n)命令来完成一些测试.然后,我可以向套接字发送多个请求,它们似乎已被处理.但是套接字总是在同一个线程id 上处理它们- 这让我相信它实际上并不是同时发生的.
特别是微软的描述,这个应用程序在等待新连接时根本没有阻止 - 这是否意味着它可以处理并发连接?
我想直接从客户端使用mongodb,在我的模型中使用javascript.我想这是可能的,因为在mongo网站上有一个用于演示的javascript实时控制台.
是否存在在普通javascript应用程序中使用相同api而无需编写客户端 - 服务器粘合代码的方法?
谢谢
如何使用PHP从服务器向客户端发送消息,避免无关的Ajax调用.
这是一个想法:
用户:Alice进行了一次更改,并将其发送到服务器.
然后,服务器检查哪些用户不是最新的,如果没有,则调用一些代码将与更改有关的信息发送给Bob(在这种情况下,谁不是最新的).
如何向Bob发送消息?
client-server ×10
sockets ×3
.net ×2
android ×2
java ×2
javascript ×2
tcp ×2
ajax ×1
c# ×1
client-side ×1
cryptography ×1
database ×1
firewall ×1
localhost ×1
mac-address ×1
middleware ×1
mongodb ×1
networking ×1
php ×1
scoring ×1
winforms ×1
wpf ×1