簡(jiǎn)單做了個(gè)Socket請(qǐng)求的例子流椒,在這里記錄一下
Android端代碼
new Thread(){
@Override
public void run() {
super.run();
try {
//1.創(chuàng)建監(jiān)聽(tīng)指定服務(wù)器地址以及指定服務(wù)器監(jiān)聽(tīng)的端口號(hào)
Socket socket = new Socket("192.168.1.103", 9080);//192.168.1.101為我這個(gè)本機(jī)的IP地址敏簿,端口號(hào)為9080.
//2.拿到客戶端的socket對(duì)象的輸出流發(fā)送給服務(wù)器數(shù)據(jù)
OutputStream os = socket.getOutputStream();
//寫(xiě)入要發(fā)送給服務(wù)器的數(shù)據(jù)
String s1 = new String("這里是你要發(fā)送到服務(wù)端的數(shù)據(jù)".getBytes(),"UTF-8");
os.write(s1.getBytes());
os.flush();
socket.shutdownOutput();
//拿到socket的輸入流,這里存儲(chǔ)的是服務(wù)器返回的數(shù)據(jù)
InputStream is = socket.getInputStream();
//解析服務(wù)器返回的數(shù)據(jù)
int lenght = 0;
byte[] buff = new byte[1024];
final StringBuffer sb = new StringBuffer();
while((lenght = is.read(buff)) != -1){
sb.append(new String(buff,0,lenght,"UTF-8"));
}
runOnUiThread(new Runnable() {
@Override
public void run() {
//這里更新UI
}
});
//3宣虾、關(guān)閉IO資源(注:實(shí)際開(kāi)發(fā)中需要放到finally中)
is.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
服務(wù)端代碼(這里做了個(gè)簡(jiǎn)單的循環(huán)接收惯裕,方便測(cè)試不同數(shù)據(jù))
ServerSocket serverSocket = new ServerSocket(9080);
System.out.println("服務(wù)器開(kāi)始監(jiān)聽(tīng)");
while (true) {
Socket socket = serverSocket.accept(); //開(kāi)始監(jiān)聽(tīng)9080端口
InputStream inputStream = socket.getInputStream();
int lenght = 0;
byte[] buff = new byte[1024];
StringBuffer sb = new StringBuffer();
while((lenght = inputStream.read(buff)) != -1){
sb.append(new String(buff,0,lenght,"UTF-8"));
}
System.out.println("這里是服務(wù)端接收到的數(shù)據(jù):" + sb.toString());
socket.shutdownInput();
OutputStream os = socket.getOutputStream();
String string = new String("這里是服務(wù)端返回到客戶端的數(shù)據(jù)".getBytes(),"UTF-8");
os.write(string.getBytes());
os.flush();
// 關(guān)閉輸出流
socket.shutdownOutput();
os.close();
// 關(guān)閉IO資源
inputStream.close();
}