android中客服端和服务器端的链接
16lz
2022-03-06
本文主要简单介绍了android手机中模拟客户端和服务器端的通信,其中服务器端的开发使用了JavaSE中的知识,其主要代码如下:
android客服端源码:
- packagecom.socket.client;
- importjava.io.*;
- importjava.net.Socket;
- importjava.net.UnknownHostException;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.text.TextUtils;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
- importandroid.widget.Toast;
- publicclassmainextendsActivityimplementsOnClickListener{
- //定义声明需要用到的UI元素
- privateEditTextedtmsgcontent;
- privateButtonbtnSend;
- //ip地址
- privateStringip="10.0.2.2";
- //端口号
- privateintport=8080;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- InitView();
- }
- privatevoidInitView(){
- //通过id获取ui元素对象
- edtmsgcontent=(EditText)findViewById(R.id.msgcontent);
- btnSend=(Button)findViewById(R.id.btnsend);
- //为btnsend设置点击事件
- btnSend.setOnClickListener(this);
- }
- publicvoidonClick(Viewbt){
- try{
- Stringmsg=edtmsgcontent.getText().toString();
- if(!TextUtils.isEmpty(msg))
- SendMsg(ip,port,msg);
- else{
- Toast.makeText(this,"请先输入要发送的内容",Toast.LENGTH_LONG);
- edtmsgcontent.requestFocus();
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- publicvoidSendMsg(Stringip,intport,Stringmsg)
- throwsUnknownHostException,IOException{
- try{
- Socketsocket=null;
- socket=newSocket(ip,port);
- BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(
- socket.getOutputStream()));
- writer.write(msg);
- writer.flush();
- writer.close();
- socket.close();
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }
注意要为其添加权限:
<uses-permission android:name="android.permission.INTERNET" />
服务器端源码:
- importjava.io.BufferedReader;
- importjava.io.InputStreamReader;
- importjava.net.ServerSocket;
- importjava.net.Socket;
- publicclassTCPDesktopServerimplementsRunnable{
- publicstaticfinalStringSERVERIP="10.0.2.2";
- publicstaticfinalintSERVERPORT=8080;
- publicvoidrun(){
- try{
- System.out.println("S:Connecting...");
- ServerSocketserverSocket=newServerSocket(SERVERPORT);
- while(true){
- Socketclient=serverSocket.accept();
- System.out.println("S:Receiving...");
- try{
- BufferedReaderin=newBufferedReader(
- newInputStreamReader(client.getInputStream()));
- Stringstr=in.readLine();
- System.out.println("S:Received:'"+str+"'");
- }catch(Exceptione){
- System.out.println("S:Error");
- e.printStackTrace();
- }finally{
- client.close();
- System.out.println("S:Done.");
- }
- }
- }catch(Exceptione){
- System.out.println("S:Error");
- e.printStackTrace();
- }
- }
- publicstaticvoidmain(Stringa[]){
- ThreaddesktopServerThread=newThread(newTCPDesktopServer());
- desktopServerThread.start();
- }
- }
其结果如下:在android手机端中输入内容
当点击发送时,我们可以看到在服务器端的控制台中输入所接受到的内容
更多相关文章
- 疯狂android讲义学习总结---TextView
- Android第五个功能:文件存储到SDCard上面
- 预显示TextView
- Android(安卓)EditText默认不弹出输入法的实现方法
- Android(安卓)API Levels
- Mac下配置android环境变量
- Android(安卓)Studio获取SHA1值
- 手动root android 模拟器(emulator)详细过程
- Android(安卓)EditText禁止输入Emoji后设置android:maxLength失