Socketプログラミングのアンドロイド開発における応用
4360 ワード
Socketはネットワークプログラミングのインタフェースとして、通称「ソケット」と呼ばれ、通常はIPアドレスとポート番号を記述するために使用され、通信のためのハンドルである.アプリケーションは、通常、ソケットを介してネットワークに要求を発行したり、ネットワーク要求に応答したりします.Android開発では,クライアントとサーバ間の通信を実現するためにHTTPに対してネットワーク通信を行う方法の他に,Socketネットワークプログラミングが用いられている.Socket通信は、一般に、TCPプロトコルベースの信頼性の高い伝送と、UDPプロトコルベースの信頼性のない伝送の2つに分けられる.次に、TCPプロトコルを例に、アンドロイドアプリケーションにおけるクライアントとサーバ側の通信を実現するプロセスについて説明します.サーバとクライアントを表すサービスとクライアントの2つのアイテムを作成し、サービスでSocketActivityクラスを作成すると、サーバがTCP通信を実現するためのキーコードは次のように記述できます.
ClientでTCPClientクラスを作成します.クライアントとサーバが通信するキーコードは次のように記述できます.
class ServerThread extends Tread{
public void run{
// ServerSocket ;
ServerSocket serversocket=null;
try{
// ServerSocket , 4567 ;
serversocket=new ServerSocket(4567);
// ServerSocket accept() , ;
Socket socket=serversocket.accept();
// Socket InputStream ;
InputStream inputstream=socket.getInputStream();
byte buffer[]=new byte[1024*4];
int temp=0;
// InputStream ;
while((temp=inputstream.read(buffer))!=-1){
system.out.println(new String(buffer,0,temp));
}
}catch(IOException e){
e.printStackTrace();
}
finally{
try{
serversocket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
ClientでTCPClientクラスを作成します.クライアントとサーバが通信するキーコードは次のように記述できます.
public class TCPClient{
public static void main(String args[]){
try{
// Socket , IP ;
Socket socket=new Socket("192.168.1.104",4567);
// InputStream ;
InputStream inputstream=new FileInputStream("f://file/words.txt");
// socket OutputStream;
OutputStream outputstream=socket.getOutputStream();
byte buffer[]=new byte[1024*4];
int temp=0;
// InputStream , OutputStream ;
while((temp=inputstream.read(buffer))!=-1){
outputstream.write(buffer,0,temp);
}
outputstream.flush();
}catch(IOException e){
e.printStackTrace();
}
}
}