以下是一个使用OkHttp和Socket连接的示例代码:

首先,确保在build.gradle文件中添加OkHttp和Kotlin的依赖项:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
}

然后,在Activity或Fragment中创建一个按钮,并在点击事件中发送数据给服务器:

import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString

class MainActivity : AppCompatActivity() {

    private lateinit var client: OkHttpClient
    private lateinit var socket: WebSocket

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val connectButton: Button = findViewById(R.id.connectButton)
        connectButton.setOnClickListener {
            connectToServer()
        }

        val sendButton: Button = findViewById(R.id.sendButton)
        sendButton.setOnClickListener {
            sendDataToServer()
        }
    }

    private fun connectToServer() {
        val request = Request.Builder()
            .url("ws://your_server_url")
            .build()

        client = OkHttpClient()
        socket = client.newWebSocket(request, object : WebSocketListener() {
            override fun onOpen(webSocket: WebSocket, response: okhttp3.Response) {
                // 连接成功
            }

            override fun onMessage(webSocket: WebSocket, text: String) {
                // 接收到服务器发送的消息
            }

            override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
                // 接收到服务器发送的二进制数据
            }

            override fun onFailure(webSocket: WebSocket, t: Throwable, response: okhttp3.Response?) {
                // 连接失败
            }
        })
    }

    private fun sendDataToServer() {
        GlobalScope.launch(Dispatchers.IO) {
            withContext(Dispatchers.Main) {
                socket.send("Hello, server!") // 发送文本消息给服务器
                // socket.send(ByteString.encodeUtf8("Hello, server!")) // 发送二进制数据给服务器
            }
        }
    }
}

请确保将ws://your_server_url替换为您的服务器URL。注意,这只是一个简单的示例,实际使用时您可能需要处理连接和发送数据的逻辑,并根据服务器响应进行相应的操作

Android Kotlin使用okhttp与socket连接点击按钮发送数据给服务器 详细代码

原文地址: https://www.cveoy.top/t/topic/ixuA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录