2011-10-17 16 views

答えて

3
//client side   
     Socket sendChannel=new Socket("localhost", 12345); 
     OutputStream writer=sendChannel.getOutputStream(); 
     writer.write(new byte[]{1}); 
     writer.flush(); 

     InputStream reader=sendChannel.getInputStream(); 
     byte array[]=new byte[1]; 
     int i=reader.read(array); 

//server side 
     ServerSocket s=new ServerSocket(12345); 
     Socket receiveChannel = s.accept(); 

     OutputStream writerServer=receiveChannel.getOutputStream(); 
     writer.write(new byte[]{1}); 
     writer.flush(); 

     InputStream readerServer=receiveChannel.getInputStream(); 
     byte array2[]=new byte[1]; 
     int i2=reader.read(array); 
1

あなたは、このようなAndroidアプリのメインアプリケーションスレッドから別のスレッドでデータを読み取るためにTCPソケットと入力ストリームを使用することができます。

// Start a thread 
new Thread(new Runnable() { 
@Override 
public void run() { 
// Open a socket to the server 
Socket socket = new Socket("192.168.1.1", 80); 
// Get the stream from which to read data from 
// the server 
InputStream is = socket.getInputStream(); 
// Buffer the input stream 
BufferedInputStream bis = new BufferedInputStream(is); 
// Create a buffer in which to store the data 
byte[] buffer = new byte[1024]; 
// Read in 8 bytes into the first 8 bytes in buffer 
int countBytesRead = bis.read(buffer, 0, 8); 
// Do something with the data 

// Get the output stream from the socket to write data back to the server 
OutputStream os = socket.getOutputStream(); 
BufferedOutputStream bos = new BufferedOutputStream(os); 
// Write the same 8 bytes at the beginning of the buffer back to the server 
bos.write(buffer, 0, 8); 
// Flush the data in the socket to the server 
bos.flush(); 
// Close the socket 
socket.close(); 
} 
}); 

あなたには、入力ストリームをラップすることができますshortやint(DataInputStream)などのマルチバイト値を読み込みたい場合は、さまざまな種類のストリームを使用できます。これらは、ネットワークエンディアンからクライアントのネイティブエンディアンへの変換を処理します。

ソケットから出力ストリームを取得して、サーバーにデータを書き戻すことができます。

これが役に立ちます。

関連する問題