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(); } }
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(); } }