@Override
protected void onStart(){
super.onStart();
Thread thread1=new Thread(new socketServer());
thread1.start();
Thread thread2=new Thread(new socketClient());
thread2.start();
}
//結束前關閉連線
@Override
protected void onStop(){
closeSocket();
super.onStop();
}
//手機端愈接收和處理訊息
private class socketServer implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
if(sServer==null){
sServer=new ServerSocket(port);
// sServer=new ServerSocket();
sServer.setReuseAddress(true);
// sServer.bind(new InetSocketAddress(port));
}
if(!sServer.isClosed()){
Log.i("isConnect", "Socket Server is Running: "+port);
handler.post(runable);
}
while(!sServer.isClosed()){
Log.i("test", "socketcheck");
socket1=sServer.accept();
if(!socket1.isClosed()){
Log.i("isConnect", "Socket1 Server is Running: "+port);
handler.post(runable);
}
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
BufferedReader bufferedReader=new BufferedReader(new
InputStreamReader(socket1.getInputStream()));
// DataInputStream dataInputStream=new
DataInputStream(socket1.getInputStream());
while(socket1.isConnected()){
BufferedWriter bufferedWriter=new BufferedWriter(new
OutputStreamWriter(socket1.getOutputStream()));
String msg=bufferedReader.readLine();
Log.i("get", msg);
// Log.i("get", "msg"+dataInputStream.readLine());
bufferedWriter.write(msg+"\n");
bufferedWriter.flush();
// Toast.makeText(baseActivity.this, msg, Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("error", "msgerror");
}
}
});
thread.start();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("error", "openthreaderror");
// finish();
}
}
}
//伺服器端
public class socketClient implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
socket2=new Socket(ip, port);
if(socket2.isConnected()){
Log.i("client", "success:"+ip+":"+port);
// sendMessage("$START,0030003100380037*46/");
// handler.post(runable);
}
// Log.i("get", "test");
BufferedReader bufferedReader=new BufferedReader(new
InputStreamReader(socket2.getInputStream()));
// Log.i("get", "test");
// DataInputStream dataInputStream=new
DataInputStream(socket2.getInputStream());
while(socket2.isConnected()){
// Log.i("msg", bufferedReader.readLine());
// Log.i("get", "test");
String msg=bufferedReader.readLine();
// if(msg!=null){
// Log.i("get", "testend");
// Log.i("msg", "check");
// Log.i("msg", "msg"+dataInputStream.readLine());
// }
if(bufferedReader.readLine()!=null){
Log.i("msg", "check");
Log.i("msg", msg);
handler.post(runable);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("error", "clienterror");
}
}
}
//關閉連線的地方
private void closeSocket(){
try {
if(sServer!=null&&!sServer.isClosed()){
sServer.close();
}
if(socket1!=null&&!socket1.isClosed()){
socket1.close();
}
if(socket2!=null&&!socket2.isClosed()){
socket2.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.i("socket close", "failed");
e.printStackTrace();
}
}
private Runnable runable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
};;
//送出資料訊息
public static void sendMessage(String msg){
if (socket2!=null&&socket2.isConnected()){
BufferedWriter bufferedWriter;
try {
bufferedWriter=new BufferedWriter(new
OutputStreamWriter(socket2.getOutputStream()));
bufferedWriter.write(msg);
bufferedWriter.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
Log.i("error", "msg send failed");
e.printStackTrace();
}
}else{
Log.i("error", "not connect");
}
}
我可以確保程式可以送出訊息給機器
但偏偏就接不到機器返回的值
希望可以有人來討教
這是我工作業務我不想飯碗不保拜託
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.16.201
※ AtkinsV3:轉錄至看板 AndroidDev 04/09 10:53