首页 > 其他分享 >Android实现Socket通信

Android实现Socket通信

时间:2022-11-03 13:33:58浏览次数:78  
标签:java socket void 通信 import new Android Socket

效果图

 

 用Idea创建一个java工程

import java.io.*;
import java.net.*;

public class Main {
    public static void main(String[] args) throws IOException {
        //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
        ServerSocket serverSocket = new ServerSocket(12345);
        InetAddress address = InetAddress.getLocalHost();
        String ip = address.getHostAddress();
        System.out.println("服务端ip地址: " + ip);
        while (true){
            Socket socket = serverSocket.accept();//it's a waiting task
            InputStream is = socket.getInputStream();     //获取输入流
            InputStreamReader isr = new InputStreamReader(is, "UTF-8");
            BufferedReader br = new BufferedReader(isr);
            String info;
            while((info=br.readLine())!=null){//循环读取客户端的信息
                System.out.println(info);
                br = new BufferedReader(isr);
            }
            socket.shutdownInput();//关闭输入流
            socket.close();
        }

    }
}

Android的MainActivity

import android.os.Bundle;

import java.io.*;
import java.net.*;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread() {
            @Override
            public void run() {
                try {
                    acceptServer();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();


    }
    private void acceptServer() throws IOException {
        //1.创建客户端Socket,指定服务器地址和端口
        Socket socket = new Socket("10.32.108.182", 12345);
        //2.获取输出流,向服务器端发送信息
        OutputStream os = socket.getOutputStream();//字节输出流
        PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
        pw.write("客户端:hello");
        pw.flush();
        socket.shutdownOutput();//关闭输出流
        socket.close();
    }
}

权限

 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 

GitHub地址 下载前给star

这就是基本的原理,后面我打算做个聊天室

 

 

标签:java,socket,void,通信,import,new,Android,Socket
From: https://www.cnblogs.com/Frank-dev-blog/p/16854168.html

相关文章

  • Android10 dex2oat实践
    最近看到一篇博客:Android性能优化之Android10+dex2oat实践,对这个优化很感兴趣,打算研究研究能否接入到项目中。不过该博客只讲述了思路,没有给完整源码。本项目参考该博......
  • Android分区简述
    Android分区在Android目录下,总是能够看到system,data等文件夹,这里简单对Android分区的概念进行简单的整理。在PMS进行初始化的时候,在扫描阶段会去创建分区的子目录,例如:/......
  • Electron 通信
    1、web向主进程发送消息(单项)使用ipcMain.on监听事件consthanle=(event,data)=>{console.log(event)console.log(data)}ipcMain.on('close',handle......
  • 用 java 简单实现 rpc 通信
    代码不一定能够运行起来,这是在之前的代码中抽象出来的。这里只是说说基本的思路定义消息:packagecom.xiaoyao.game.net.framework.codec;importcom.google.protobuf.Messa......
  • 驱动开发:内核封装TDI网络通信接口
    在上一篇文章《驱动开发:内核封装WSK网络通信接口》中,LyShark已经带大家看过了如何通过WSK接口实现套接字通信,但WSK实现的通信是内核与内核模块之间的,而如果需要内核与应用......
  • 驱动开发:内核封装WSK网络通信接口
    本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,......
  • Netty+WebSocket 获取火,币交易所数据项目
    先附上项目项目GitHub地址 spring-boot-netty-websocket-huobi项目简介本项目使用 SpringBoot+Netty来开发WebSocket服务器,与火币交易所Websocket建立连接,时时获取火......
  • [Android开发学iOS系列] Auto Layout
    [Android开发学iOS系列]AutoLayout内容:介绍什么是AutoLayout.基本使用方法在代码中写约束的方法AutoLayout的原理尺寸和优先级AutoLayout的使用细则重......
  • Androidstudio快速解决Gradlesdependencycachemaybecorrupt和Gradle配置gradle-3.*-al
    Error:Failedtoopenzipfile. Gradle'sdependencycachemaybecorrupt(thissometimesoccursafteranetworkconnectiontimeout.) Re-downloaddependencies......
  • Android Studio编程第一篇:反应时间测试(RTI)
    目标参与者必须选择并按住屏幕底部的一个按钮。上面有一个圆圈(一个用于简单模式,五个用于五种选择模式)。在每一种情况下,其中一个圆圈中都会出现一个黄色的圆点,参与者必须尽......