两台安卓手机局域网内通过socket通信
2016-05-11 19:56
330 查看
1:两个手机需要在同一个局域网里面
2:修改客户端Client里面的IP地址,IP地址设置为作为服务端的手机的IP地址
3:最下面为服务端,要安装到一个手机里并先运行起来,会显示本机IP地址,显示Client传来的信息,并给Client反馈
4:Client为客户端,有一个输入框和发送按钮,显示传过去的信息
client端
server端:
2:修改客户端Client里面的IP地址,IP地址设置为作为服务端的手机的IP地址
3:最下面为服务端,要安装到一个手机里并先运行起来,会显示本机IP地址,显示Client传来的信息,并给Client反馈
4:Client为客户端,有一个输入框和发送按钮,显示传过去的信息
client端
/** * create by caoyinfei */ public class MainActivity extends Activity { TextView result; Button send; EditText input; public Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { result.append("server:" + msg.obj + "\n"); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); result = (TextView) findViewById(R.id.result); send = (Button) findViewById(R.id.send); input = (EditText) findViewById(R.id.input); send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String inputContent = input.getText().toString(); result.append("client:" + inputContent + "\n"); //启动线程 向服务器发送和接收信息 new MyThread(inputContent).start(); } }); } class MyThread extends Thread { public String content; public MyThread(String str) { content = str; } @Override public void run() { //定义消息 Message msg = new Message(); msg.what = 1; try { //连接服务器 并设置连接超时为5秒 Socket socket = new Socket(); socket.connect(new InetSocketAddress("10.100.165.33", 30000), 1000); //获取输入输出流 OutputStream ou = socket.getOutputStream(); //获取输出输出流 BufferedReader bff = new BufferedReader(new InputStreamReader( socket.getInputStream())); //向服务器发送信息 ou.write(content.getBytes("utf-8")); ou.flush(); //读取发来服务器信息 String result = ""; String buffer = ""; while ((buffer = bff.readLine()) != null) { result = result + buffer; } msg.obj = result.toString(); //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); //关闭各种输入输出流 bff.close(); ou.close(); socket.close(); } catch (SocketTimeoutException aa) { //连接超时 在UI界面显示消息 msg.obj = "服务器连接失败!请检查网络是否打开"; //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); } } } }
server端:
/** * create by caoyinfei */ public class MainActivity extends Activity { public static TextView client_content, ip; private String serverIp = ""; String buffer = ""; public static Handler mHandler = new Handler() { @Override public void handleMessage(android.os.Message msg) { if (msg.what == 1) { client_content.append("client" + msg.obj + "\n"); } } ; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); client_content = (TextView) findViewById(R.id.client_content); ip = (TextView) findViewById(R.id.ip); serverIp = getlocalip(); ip.setText("IP addresss:" + serverIp); LogUtil.d("dd","ddddddddddd"); new Thread() { public void run() { OutputStream output; String serverContent = "hello hehe"; try { ServerSocket serverSocket = new ServerSocket(30000); while (true) { Message msg = new Message(); msg.what = 1; try { Socket socket = serverSocket.accept(); //向client发送消息 output = socket.getOutputStream(); output.write(serverContent.getBytes("utf-8")); output.flush(); socket.shutdownOutput(); //获取输入信息 BufferedReader bff = new BufferedReader(new InputStreamReader (socket.getInputStream())); //读取信息 String result = ""; String buffer = ""; while ((buffer = bff.readLine()) != null) { result = result + buffer; } msg.obj = result.toString(); mHandler.sendMessage(msg); bff.close(); output.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } catch (IOException e1) { e1.printStackTrace(); } } ; }.start(); } private String getlocalip() { WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); // Log.d(Tag, "int ip "+ipAddress); if (ipAddress == 0) return null; return ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff) + "." + (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff)); } }
相关文章推荐
- maven install,compile,或者打包的时候 找不到符号,类 错误
- C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
- []+与[]表达式
- Spatial pyramid pooling (SPP)-net (空间金字塔池化)笔记
- wifidog源码分析 - 初始化阶段
- 学习react,redux,router,antd的一些感悟(见解)
- Android之圆角矩形
- java RTTI和反射
- 的五次C++作业
- 数据结构实验之链表六:有序链表的建立
- Servlet & JSP - Decorating Requests and Responses
- 常用命令
- iOS开发之基础视图——UISegmentedControl
- 自学Java步骤
- [SCOI2016][BZOJ4569]萌萌哒
- ListView的使用和优化
- fastjson封装
- Java并发编程:线程池的使用
- 操作系统开发系列—13.e.三进程
- 小白书练习题5.5.3 字符串类、