android网络编程基础二socket简单聊天
服务端保持等待来自客户端的连接和接收来自客户端的消息
服务端:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Thread{ kotlin.run { var serverSocket: ServerSocket? = null try { serverSocket = ServerSocket(8866) while (true){ println("等待来自客户端的链接...") var socket: Socket = serverSocket.accept() println("客户端已链接...") var bufferIn = BufferedReader(InputStreamReader(socket.getInputStream())) var recvMsg = bufferIn!!.readLine() + System.getProperty("line.separator") println("接收到的信息$recvMsg") //给客户端回一条信息 var bufferedout:BufferedWriter= BufferedWriter(OutputStreamWriter(socket.getOutputStream())) var sendMsg="我已收到你发的信息" + System.getProperty("line.separator") bufferedout.write(sendMsg) bufferedout.flush() } }catch (e:InterruptedIOException) { // 超时错误 e.printStackTrace(); // IO 异常 } catch (e:IOException) { // 打印错误 e.printStackTrace(); } finally { // 判定是否初始化 ServerSocket 对象,如果初始化则关闭 serverSocket if (serverSocket != null) { try { serverSocket.close(); } catch (e:IOException) { e.printStackTrace(); } } } } }.start() } }
客户端
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Thread{ kotlin.run { try{ var socket:Socket= Socket("10.0.2.15",8866) var buffIn:BufferedReader=BufferedReader(InputStreamReader(socket.getInputStream())) var buffOut:BufferedWriter= BufferedWriter(OutputStreamWriter(socket.getOutputStream())) var outMsg:String="Tcp connection to 8866"+System.getProperty("line.separator") buffOut.write(outMsg) buffOut.flush() var inMsg=buffIn.readLine()+System.getProperty("line.separator") //Log.i("TCPClient", "received:$inMsg") println("接受到的消息:$inMsg") socket.close() }catch (e: UnknownHostException){ e.printStackTrace() }catch (e:IOException){ e.printStackTrace() } } }.start() } }
在服务端和客户端添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
运行:
运行服务端

运行客户端

服务端显示

结束客户端,重新运行客户端,服务端显示

这样大概就能实现简单的聊天了吧~
浙公网安备 33010602011771号