Android,如何通过套接字提高网络区域的性能?

时间:2013-04-16 21:18:50

标签: java android performance sockets

我正在开发一款实时游戏来学习Android。我正在使用Tomcat和Webservices在游戏开始时交换一些数据。我正在使用套接字。两个Android设备都可以通过套接字与Java进程交换信息 - 这可能是我的服务器。有时他们必须发送信息,有时他们从服务器获取信息。

我已经使用WiFi和3G进行了检查。令我惊讶的是3G的速度有多慢!所以,我不知道我是否编程正确。确实,我一直懒惰,并且我重用了一个类来发送可能更小的数据。这可能是一个很大的区别吗?它有大约10个字符串和5个整数。可能是...... 5?真的,我不认为对象太重了。另一件事是这个对象实现了Serializable,我已经读过我可以实现的另一个接口,如果你正在使用Android,它会更好,但我也在使用Java,所以我不知道它是否是就在你使用Android的时候。我认为它被称为Parcelable

我正在尝试做一些接近实时的事情,我等待4-6秒,从我点击按钮到服务器返回数据。

当我按下按钮时,数据将使用套接字发送到服务器。服务器处理信息(非常快),并将更新的数据发送给该用户和他的对手。在Android方面,我创建了两个AsynTask。一个人总是从服务器收听可能的新数据,另一个人在用户做某事时将数据发送到服务器。

最后一个问题是更新不同设备之间的时间差异。我的意思是,新数据在其中一台设备上提前2秒。有可能同步吗?我想这是因为网络的质量不同,所以我猜它可能很难。但是,我怎么能改善这方面呢?

更新:

好吧,我会尝试一些代码,但是,代码太多了!!

好吧,我认为这是我的第一个错误,我发送的课程太大了,因为我试图将课程重新用于离线模式和在线模式。

该课程如下:

/**
 * 
 */
private static final long serialVersionUID = -2849406755758020431L;
private List<Word> listWords;
private long numberWords;

private int score1; 
private int score2;

//OffLine
private int lifes;
private int numWordsNextLevel;
private int speedTime;
private int level;
private int difficult;

//Online
private String message;
private int numPlayers;
private int numWordsGame;
private String namePlayer1;
private String namePlayer2;


//Flags players
private boolean player1failed;
private boolean player2failed;

我认为我可以将其减少到4个整数和2个字符串以及几个布尔值。这可能有区别吗?这值得吗?

这是我在双方发送的课程。真的,我不需要在双方发送相同的数据。因此,我需要发送到服务器的数据非常小。

关于UDP或TCP,丢失数据包会发生什么?人们通常会采取什么措施来改善它? UDP比TCP快多少?我知道你不必发送ACK,但是,我真的不知道这部分协议有多少时间。

我一直在用DDMS检查我发送了多少数据,每次大约1-1.5K字节,我不认为它太多了,我打算创建一个特定的类来交换数据,但是,更多的建议呢?

0 个答案:

没有答案