作者AtkinsV3 (反吱野心家)
看板AndroidDev
标题Fw: [问题] socket请教问题
时间Tue Apr 9 10:53:45 2013
※ [本文转录自 java 看板 #1HOu9-R6 ]
作者: AtkinsV3 (反吱野心家) 看板: java
标题: [问题] socket请教问题
时间: Tue Apr 9 10:52:44 2013
@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
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: AtkinsV3 (220.134.16.201), 时间: 04/09/2013 10:53:45
1F:→ tkucuh:对方确定有收到? 04/09 11:05