Android Socket 轻松建立连接和发送消息

    xiaoxiao2021-03-26  24

    1.建立Socket连接

            1) Socket 实现了TCP/IP协议,可以连接到网络上的上脑,并收发数据         2) ServerSocket 用于服务端,可以监听服务端口,等待客户端连接,连接后可以生成用于传输数据的Socket         3) 创建服务端             ServerSocket serverSocket = new ServerSocket(9999);             Socket socket =  serverSocket.accept();  //等待客户端连接         4) 创建客户端             Socket socket = new Socket("100.100.28.26", 9999);             // 注意:注册网络权限;不能在主线程做网络连接         5) 客户端发送消息             DataOutputStream writer = new DataOutputStream(socket.getOutputStream());             writer.writeUTF("嘿嘿,你好啊,服务器..");  // 写一个UTF-8的信息         6) 服务端接收消息             DataInputStream reader = new DataInputStream( socket.getInputStream());             String msg = reader.readUTF();         7)  服务器等待说明           

    2.Android客户端、服务端具体实现

    1)Android客户端 [java]  view plain  copy   package com.example.socketclient;      import java.io.DataOutputStream;   import java.io.IOException;   import java.net.Socket;   import java.net.UnknownHostException;      import android.app.Activity;   import android.os.Bundle;   import android.util.Log;   import android.view.View;      /**   * 客户端   *   */   public class MainActivity extends Activity {          @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_main);       }          private Socket socket;          /**        * 建立服务端连接        */       public void conn(View v) {           new Thread() {                  @Override               public void run() {                      try {                       socket = new Socket("100.100.28.26"9999);                       Log.e("JAVA""建立连接:" + socket);                   } catch (UnknownHostException e) {                       e.printStackTrace();                   } catch (IOException e) {                       e.printStackTrace();                   }               }           }.start();       }          /**        * 发送消息       */       public void send(View v) {           new Thread() {               @Override               public void run() {                      try {                       // socket.getInputStream()                       DataOutputStream writer = new DataOutputStream(socket.getOutputStream());                       writer.writeUTF("嘿嘿,你好啊,服务器.."); // 写一个UTF-8的信息                                              System.out.println("发送消息");                   } catch (IOException e) {                       e.printStackTrace();                   }               }           }.start();       }      }   2)服务端 [java]  view plain  copy   package com.example.socketserver;      import java.io.DataInputStream;   import java.io.IOException;   import java.net.ServerSocket;   import java.net.Socket;      /**   * 服务端   *   */   public class SocketServer{          public static void main(String[] args) {           startService();       }          /**        * 启动服务监听,等待客户端连接       */       private static void startService() {           try {               // 创建ServerSocket               ServerSocket serverSocket = new ServerSocket(9999);               System.out.println("--开启服务器,监听端口 9999--");                  // 监听端口,等待客户端连接               while (true) {                   System.out.println("--等待客户端连接--");                   Socket socket = serverSocket.accept(); //等待客户端连接                   System.out.println("得到客户端连接:" + socket);                                      startReader(socket);               }              } catch (IOException e) {               e.printStackTrace();           }       }          /**        * 从参数的Socket里获取最新的消息       */       private static void startReader(final Socket socket) {              new Thread(){               @Override               public void run() {                   DataInputStream reader;                   try {                       // 获取读取流                       reader = new DataInputStream( socket.getInputStream());                       while (true) {                           System.out.println("*等待客户端输入*");                           // 读取数据                           String msg = reader.readUTF();                           System.out.println("获取到客户端的信息:" + msg);                       }                   } catch (IOException e) {                       e.printStackTrace();                   }               }           }.start();       }      }  

    3.下来我们运行Demo来看一看效果

    项目源码,点击下载
    转载请注明原文地址: https://ju.6miu.com/read-658531.html

    最新回复(0)