android局域网socket通信
1.台式机没有无线网卡,就用的360随身wifi开启了网络共享模式,相当于建了一个热点。
Windows下:运行->cmd->ipconfig /all,查询本地IP地址:本次测试为172.17.187.1
2.将手机连接到WIFI热点,在WIFI连接的高级选项菜单,查询到手机端获取的IP地址为:172.17.187.2,可见我的台式机和手机已经在同一局域网中。
3.开始编写服务器端程序
在eclipse中新建JAVA项目,保留Main函数。
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(30000);
// ServerSocket ss=new ServerSocket();
// String ip="172.17.187.1"; //监听无线网卡IP
//// String ip="0.0.0.0"; //监听本地所有IP
// int port=30633;
// InetSocketAddress addr=new InetSocketAddress(ip, port);
// ss.bind(addr);
System.out.println("The sever is started!");
while(true){
Socket s=ss.accept();
String LocalSocketAddress().toString();
System.out.println("My address is:"+IPaddr);
System.out.println("The client is connected!");
OutputStream OutputStream();
os.write("您好,您收到服务器的反馈!".getBytes("UTF-8"));
s.close();
}
}
}
服务器端函数很简单,要注意一点就是,new ServerSocket()的时候,若没有绑定监听IP,则会监听本机所有IP,即ip="0.0.0.0"这种情况,所以客户端填写socket的目的IP是我的台式机的WIFI网卡ip也一定会被监听到,当然绑定了监听IP为WIFI网卡ip也没问题。
4.客户端程序
客户端启动线程,负责从服务器端接收反馈信息,将反馈信息填写到UI控件中。
new Thread(){
@Override
publicvoid run() {
try {
//121.248.55.120
Socket socket=socket通信在哪一层new Socket("121.248.55.120",30000);
BufferedReader br=new BufferedReader(new InputStream()));
String adLine();
String LocalAddress().toString();
txt1.append("来自服务器的问候:"+line+"\n");
txt1.append(myip);
br.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
4.运行程序
将服务器端代码,右键工程,run as-> JAVA PROJECT,则启动服务器端程序,服务器的accept()会阻塞,直到客户端接入。然后运行客户端程序,发布到调试用的真机上。运行成功!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论