如何实现App与服务器之间的通信源码?

Android客户端

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MainActivity extends Activity {
    private TextView textView;
    private EditText editText;
    private PrintWriter printWriter;
    private ExecutorService executorService = Executors.newSingleThreadExecutor();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textView);
        editText = findViewById(R.id.editText);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = editText.getText().toString();
                if (!message.isEmpty()) {
                    printWriter.println(message);
                    editText.setText("");
                }
            }
        });
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                try {
                    Socket socket = new Socket("192.168.1.100", 9999); // 替换为服务器IP地址和端口号
                    printWriter = new PrintWriter(socket.getOutputStream(), true);
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    while (!Thread.currentThread().isInterrupted()) {
                        String line = bufferedReader.readLine();
                        if (line != null) {
                            final String finalLine = line;
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    textView.append(finalLine + "
");
                                }
                            });
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

服务器端代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999); // 端口号与客户端保持一致
            System.out.println("服务器已启动,等待连接...");
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println("客户端已连接:" + socket);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                            PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
                            String line;
                            while ((line = bufferedReader.readLine()) != null) {
                                System.out.println("收到消息:" + line);
                                printWriter.println("服务器已收到:" + line); // 回显消息给客户端
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            try {
                                socket.close();
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码展示了一个简单的Android客户端与Java服务器端的TCP Socket通信示例,客户端可以发送消息到服务器,服务器接收后回显消息给客户端,实际项目中需要根据具体需求进行修改和完善,例如添加错误处理、优化性能等。

app和服务器通信源码

到此,以上就是小编对于“app和服务器通信源码”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/719329.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-09 19:25
Next 2024-12-09 19:29

相关推荐

  • 如何访问服务器上的文件共享?

    访问服务器文件共享详细操作步骤与注意事项1、确定服务器共享文件夹- 确认服务器地址- 获取共享文件夹权限- 了解身份验证方式2、使用Windows资源管理器访问- 打开Windows资源管理器- 输入服务器IP或主机名- 访问共享文件夹3、使用命令提示符访问- 打开命令提示符工具- 使用net use命令连接……

    2024-11-06
    03
  • 多ip云主机

    多IP云主机是一种提供多个独立IP地址的云计算服务,允许用户在单一服务器上运行多个网站或应用,便于管理和扩展网络资源。

    2024-03-16
    090
  • samba服务器的配置文件是

    Samba服务器的配置文件是smb.conf,它是Samba服务的核心配置文件,用于定义Samba服务器的行为和设置,Samba是一个实现SMB/CIFS协议的开源软件,可以让Linux系统与Windows系统之间进行文件和打印机共享。smb.conf文件的结构smb.conf文件通常位于/etc/samba/目录下,其结构分为全局配……

    2024-01-24
    0163
  • 阿里云:优惠活动与多重优势,实现高效可靠的云计算体验

    随着科技的不断发展,云计算已经成为了企业信息化建设的重要支撑,阿里云作为国内领先的云服务提供商,凭借其丰富的产品线、优质的服务和优惠活动,为企业提供了一站式的云计算解决方案,本文将详细介绍阿里云的优惠活动与多重优势,帮助企业实现高效可靠的云计算体验。一、阿里云优惠活动1. 新用户专享优惠为了让更多的企业和个人用户享受到阿里云的优质服务……

    2023-11-04
    0307
  • 法国VPS提供什么样的技术支持?

    法国VPS(虚拟私人服务器)提供商通常提供一系列技术支持服务,以确保客户能够高效、安全地运行他们的在线业务,这些服务可能包括硬件和软件的维护、故障排除、网络监控、数据备份与恢复等,下面是一些常见的技术支持服务和技术介绍:硬件支持法国VPS提供商会确保服务器的硬件设施处于最佳状态,这包括对物理服务器进行定期检查、更新和升级硬件设备,以及……

    2024-02-09
    0195
  • 为什么wifi网没了

    可能是因为路由器故障、网络信号中断、设备连接问题或者密码输入错误等原因导致WiFi无法使用。建议检查路由器状态、重启设备或重新输入密码解决问题。

    2024-05-15
    0115

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入