注意:网络访问不能再主线程(ui线程)中进行,否则程序会崩溃,需要建立线程来发起网络访问
初始版本:
package com.example.ymy;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//按钮关联的事件
public void Connect_server(View v){
//创建线程来进行网络访问
new Thread(new Runnable() {
public void run() {
try {
//发起访问
Socket send = new Socket("10.15.134.213", 8989);
//发送数据
OutputStream out = send.getOutputStream();
String Date = "from to client";
out.write(Date.getBytes());
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
进阶版本:
package com.example.ymy;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
public Handler H;
public TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定Textview控件
text = (TextView) findViewById(R.id.textView1);
H = new Handler(){
//消息处理
public void handleMessage(Message msg) {
super.handleMessage(msg);
//获取msg传递的数据
Bundle b = msg.getData();
String str = b.getString("msg");
//修改Textview控件
text.setText(str);
}
};
}
//按钮关联的事件
public void Connect_server(View v){
//创建线程来进行网络访问
new Thread(new Runnable() {
public void run() {
try {
//发起访问
Socket send = new Socket("10.15.134.213", 8989);
//发送数据
OutputStream out = send.getOutputStream();
String Date_W = "from to client";
out.write(Date_W.getBytes());
//读取数据
InputStream in = send.getInputStream();
byte[] Date_R = new byte[128];
int len = in.read(Date_R);
String str = new String(Date_R,0,len);
//创建msg,启动Hander
Message msg = new Message();
Bundle b = new Bundle();
b.putString("msg",str);
msg.setData(b);
H.sendMessage(msg);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
1443

被折叠的 条评论
为什么被折叠?



