java - 连接失败:ECONNREFUSED(连接被拒绝)
问题描述
我有基于此代码相互连接的简单客户端和服务器套接字应用程序。一开始我可以从客户端向服务器和服务器向客户端发送问候消息,但我的问题是当我尝试发送消息时发送下一条消息 onclick 它正在返回java.net.ConnectException: failed to connect to /10.0.2.16 (port 5000) from /:: (port 57650): connect failed: ECONNREFUSED (Connection refused)
两个应用程序都在同一个模拟器中运行
我的问题在哪里?
这是我的服务器:我的服务器套接字在服务中。我在服务启动时执行它
class SocketService: Service() {
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
thread { ClientHandler().run() }
return START_STICKY
}
internal inner class ClientHandler() : Runnable{
override fun run() {
val server = ServerSocket(5000)
val client = server.accept()
var reader = BufferedReader(InputStreamReader(client.getInputStream()))
var writer = PrintWriter(client.getOutputStream())
try {
writer.write("hello from server" + "\n")
writer.flush()
receiveString = reader.readLine()
} catch (ex: Exception) {
Timber.e("$ex")
}
}
}
这是我的客户
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Timber.plant(FileLog(applicationContext))
thread { ThreadopenPort("hello").run() }
}
fun sendMessage(view:View){
try {
val message = "message on button click"
thread { ThreadopenPort(message).run() }
}catch (ex:Exception){
Timber.i(messageLog)
}
}
internal inner class ThreadopenPort(private val message: String) : Runnable {
override fun run() {
var socket: Socket
try {
socket = Socket(SERVER_IP, SERVER_PORT)
output = PrintWriter(socket.getOutputStream())
input = BufferedReader(InputStreamReader(socket.getInputStream()))
if (i == 0) {
output!!.write("hello from client" + "\n")
output!!.flush()
rMessage = input!!.readLine()
run {
runOnUiThread(Runnable {
textView.text = textView.text.toString() + "server: $rMessage\n"
})
}
input!!.close()
output!!.close()
socket.close()
}
if (input!!.readLine() != null){
output!!.write(message+ "\n")
output!!.flush()
rMessage = input!!.readLine()
run {
runOnUiThread(Runnable {
textView.text = textView.text.toString() + "server: $rMessage\n"
})
}
input!!.close()
output!!.close()
socket.close()
}
Timber.i("Message received from Payment Service at $formatted message: ${rMessage}")
} catch (e: Exception) {
e.printStackTrace()
}
}
}
解决方案
推荐阅读
- python-3.x - 从单个 POST 请求创建多个数据库实例
- android - onPaymentSuccess 和 onPaymentError 可能未在您的活动中实现 - Xamarin Android - Razorpay 集成
- android - Android studio daemon not running starting now at tcp 5037 unable to run 'adb':null adb.exe start server failed run manually
- informatica-powercenter - Unable to install Informatica server
- javascript - How to spy on individual functions that are default exports
- python - Pandas 在列中列出唯一值并将其分配给单独的列
- node.js - mongoose - 在 Model.create 中选择特定字段
- flutter - Provider.of(context, listen: false) 是否等同于 context.read()?
- asp.net-mvc - 用户代码未处理空引用异常并且项目为空
- javascript - 选择选项后从下拉列表中选择 2 多选删除选项