Android apps浅析02-Android IM:携帯電話QQのようなインスタント通信オープンソース実現
5077 ワード
Android apps浅析02-Android IM:携帯電話QQのようなインスタント通信オープンソース実現
これはAndroid上の簡単なIMアプリケーションの実行時であり、アプリケーションはHTTP要求をサーバに送信し、PHPとMySQLで、他の友人の状態とデータを検証、登録、取得して実現し、他のデバイスの他のアプリケーションと通信ソケットを通じて接続します.
1.データベースは2つのテーブルのみ:友人テーブルとユーザーテーブル:
2.コアコードは、Http requestとSocketを送信します.
3.その他の情報:
http requestとsocketを使用して実装されたAndroidインスタント通信アプリケーションの元のソース:https://code.google.com/p/simple-android-instant-messaging-application/最新ソース:https://github.com/Pirngruber/AndroidIMソースのダウンロード:http://download.csdn.net/user/yangzhenping初期作成者が提供するソースコードのダウンロード:http://download.csdn.net/detail/yangzhenping/8397989
これはAndroid上の簡単なIMアプリケーションの実行時であり、アプリケーションはHTTP要求をサーバに送信し、PHPとMySQLで、他の友人の状態とデータを検証、登録、取得して実現し、他のデバイスの他のアプリケーションと通信ソケットを通じて接続します.
1.データベースは2つのテーブルのみ:友人テーブルとユーザーテーブル:
CREATE TABLE `friends` (
`Id` int(10) unsigned NOT NULL auto_increment,
`providerId` int(10) unsigned NOT NULL default '0',
`requestId` int(10) unsigned NOT NULL default '0',
`status` binary(1) NOT NULL default '0',
PRIMARY KEY (`Id`),
UNIQUE KEY `Index_3` (`providerId`,`requestId`),
KEY `Index_2` (`providerId`,`requestId`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='providerId is the Id of the users who wish to be friend with';
CREATE TABLE `users` (
`Id` int(10) unsigned NOT NULL auto_increment,
`username` varchar(45) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`email` varchar(45) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`status` tinyint(3) unsigned NOT NULL default '0',
`authenticationTime` datetime NOT NULL default '0000-00-00 00:00:00',
`userKey` varchar(32) NOT NULL default '',
`IP` varchar(45) NOT NULL default '',
`port` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`Id`),
UNIQUE KEY `Index_2` (`username`),
KEY `Index_3` (`authenticationTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.コアコードは、Http requestとSocketを送信します.
public String sendHttpRequest(String params)
{
URL url;
String result = new String();
try
{
url = new URL(AUTHENTICATION_SERVER_ADDRESS);
HttpURLConnection connection;
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.println(params);
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
result = result.concat(inputLine);
}
in.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
if (result.length() == 0) {
result = HTTP_REQUEST_FAILED;
}
return result;
}
public boolean sendMessage(String message, String ip, int port)
{
try {
String[] str = ip.split("\\.");
byte[] IP = new byte[str.length];
for (int i = 0; i < str.length; i++) {
IP[i] = (byte) Integer.parseInt(str[i]);
}
Socket socket = getSocket(InetAddress.getByAddress(IP), port);
if (socket == null) {
return false;
}
PrintWriter out = null;
out = new PrintWriter(socket.getOutputStream(), true);
out.println(message);
} catch (UnknownHostException e) {
return false;
//e.printStackTrace();
} catch (IOException e) {
return false;
//e.printStackTrace();
}
return true;
}
3.その他の情報:
http requestとsocketを使用して実装されたAndroidインスタント通信アプリケーションの元のソース:https://code.google.com/p/simple-android-instant-messaging-application/最新ソース:https://github.com/Pirngruber/AndroidIMソースのダウンロード:http://download.csdn.net/user/yangzhenping初期作成者が提供するソースコードのダウンロード:http://download.csdn.net/detail/yangzhenping/8397989