Android(安卓)Socket与服务器通信通用Demo
16lz
2021-01-26
在Android中通过Socket来来连接服务器,是一种比较简单的网络连接方式,虽然现在使用的不多,但某些场合还是很方便的,这里总结一下基本的写法。
客户端:
try {Socket socket = new Socket(host, port);socket.setSoTimeout(6 * 1000);PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);printWriter.println("socket test");printWriter.flush();BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));revMsg = reader.readLine();if (TextUtils.isEmpty(revMsg)) {revMsg = "Server Error";}printWriter.close();reader.close();socket.close();return revMsg;} catch (Exception e) {e.printStackTrace();revMsg = "Server Error";}
服务器端:
import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(8888);while (true) {Socket socket = serverSocket.accept();new ServerThread(socket);}} catch (Exception e) {e.printStackTrace();}}}
import java.io.BufferedReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;class ServerThread extends Thread {private Socket socket;private BufferedReader bufferedReader;private PrintWriter printWriter;public ServerThread(Socket socket) throws IOException {this.socket = socket;bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));printWriter = new PrintWriter(socket.getOutputStream(), true);System.out.println("Client(" + getName() + ") connected...");start();}@Overridepublic void run() {try {String line = bufferedReader.readLine();if (!line.equals("exit")) {System.out.println("Client(" + getName() + ") say: " + line);WriteToTxt(line + "\r\n","/local/data.txt");printWriter.println("Receive Success!");}printWriter.close();bufferedReader.close();socket.close();} catch (IOException e) {}}private void WriteToTxt(String str, String path) {try {FileWriter writer = new FileWriter(path, true);writer.write(str);writer.close();} catch (IOException e) {e.printStackTrace();}}}
服务器端通过多线程来处理多个并发的socket请求。
Demo很简单。
以上。
更多相关文章
- activity介绍和值的传递(寒假学习2)
- Android(安卓)兼容性测试(CTS)
- 在Linux下adb连接不上android手机的终极解决方案
- Android应用启动优化:一种DelayLoad的实现和原理
- Mac系统下利用ADB命令连接android手机并进行文件操作
- Android(安卓)OpenGL ES(四):关于EGL
- [Network]Android(安卓)N 新wifi connect&auto connect流程分析
- android发送http请求—-URLConnection、HttpURLConnection的使用
- Android(安卓)Arduino 蓝牙模块通信源代码