android访问本机关键是IP为10.0.2.2,端口号选择既不能太小也不能太大
android客户端:
需开权限 <uses-permission android:name="android.permission.INTERNET" />
界面就加个button,好控制观察
import java.io.*;
import java.net.*;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SocketActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
setListeners();
}
private Button button_send;
private TextView view_suggest;
private void findViews() {
button_send = (Button) findViewById(R.id.send);
view_suggest = (TextView) findViewById(R.id.message);
}
private void setListeners() {
button_send.setOnClickListener(send);
}
private Button.OnClickListener send = new Button.OnClickListener() {
///按下Button后的动作
public void onClick(View v) {
view_suggest.setText("start");
int port=7100;
try{
Socket sc = new Socket("10.0.2.2",port);//创建本地socket连接
OutputStream out = sc.getOutputStream();
DataOutputStream dout = new DataOutputStream(out);
//获取输出流,并创建相应的数据输出流
dout.writeUTF("Tom"); //将tom写入输出流
InputStream in = sc.getInputStream();
DataInputStream din = new DataInputStream(in);
//获取输入流,并创建相应的数据输入流
String str = din.readUTF();
view_suggest.setText(str);
in.close();
out.close();
sc.close();
}
catch(UnknownHostException e){view_suggest.setText("error");}
catch(IOException e){view_suggest.setText("error");}
}
};
}
PC服务端:
import java.net.*;
import java.io.*;
public class SocketAppServer{
public static void main(String args[]){
ServerSocket ss = null;
int port = 7100;
String hello = "From Server:Hello World!";
try{
ss = new ServerSocket(port);
//建立服务器Socket连接,其侦听端口为port,port与客户端相同
}
catch(IOException e){
System.out.println(e);//若端口已被占用,则抛出异常
System.exit(1);
}
while(true){
try{
System.out.println("正在等待连接端口port=" + port + "...");
Socket cs = ss.accept();
InputStream in = cs.getInputStream();
DataInputStream din = new DataInputStream(in);
//获取输入流,并创建相应的数据输入流
String name = din.readUTF();
OutputStream out = cs.getOutputStream();
DataOutputStream dout = new DataOutputStream(out);
//获取输出流,并创建相应的数据输出流
dout.writeUTF(hello+"Your name:" + name);//将字符串写入输出流
System.out.println("已成功连接端口port=" + port);
System.out.println("=========================================");
in.close();
out.close();
cs.close();
}
catch(IOException e){
System.out.println(e);//若端口已被占用,则抛出异常
}
}
}
}
(jmu84xu) |