標籤:
1.首先建立wifi熱點伺服器 wifi用戶端串連
2.開啟一個子線程迴圈監聽某個連接埠,進行資料流輸入輸出
/* 伺服器 接收資料 */
class Receiver extends Thread {
public String receiverContent;
public boolean flag = true;
public ServerSocket serverSocket = null;
public void run() {
try {
// 建立ServerSocket
serverSocket = new ServerSocket(3358);
while (flag) {
// 接受用戶端請求
Socket client = serverSocket.accept();
System.out.println("accept");
try {
// 接收用戶端訊息
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));
receiverContent = in.readLine();
System.out.println("read:" + receiverContent);
handler.sendEmptyMessage(0);
// 向客戶端發送訊息
PrintWriter out = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(
client.getOutputStream())), true);
out.println("server message");
// 關閉流
out.close();
in.close();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
} finally {
// 關閉
client.close();
System.out.println("close");
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void close() {
flag = false;
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/* 用戶端發送資料 */
class Sender extends Thread {
String serverIp;
String message;
Sender(String serverAddress, String message) {
super();
serverIp = serverAddress;
this.message = message;
}
public void run() {
Socket sock = null;
PrintWriter out;
try {
// 聲明sock,其中參數為服務端的IP地址與自訂連接埠
sock = new Socket(serverIp, 3358);
Log.w("WifiConnection", "I am try to writer" + sock);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
// 向伺服器端發送訊息
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(sock.getOutputStream())), true);
out.println(message);
// 接收來自伺服器端的訊息
BufferedReader br = new BufferedReader(new InputStreamReader(
sock.getInputStream()));
String msg = br.readLine();
Message m = handler.obtainMessage();
m.what = 1;
m.obj = msg;
handler.sendMessage(m);
// 關閉流
out.close();
out.flush();
br.close();
// 關閉Socket
sock.close();
} catch (Exception e) {
LogUtil.e("發送錯誤:[Sender]run()" + e.getMessage());
}
}
}
android wifi熱點 socket通訊