안녕하세요 이번에 공부하면서 안드로이드, nodejs사용해서 소켓 통신 해보려고 하는데
제대로 작동하질 않아서 이렇게 글 올리게 됐습니다.
안드로이드에서는 socket, nodejs에서는 socket.io사용해서 하려고하는데
인터넷에 올라온 예제 코드를 그대로 작성해도 실행이 되질 않습니다.
어제 글 올렸는데 설명이 부족한 것 같아서 추가해서 질문올립니다ㅠ
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
app.get('/', (req, res) => {
res.send("hello")
})
io.on('connection', function(socket) {
console.log("user connect");
});
server.listen(3000, function(){
console.log("server on 3000");
});
package com.example.exam
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import io.socket.client.IO
import io.socket.client.Socket
import java.net.URISyntaxException
class MainActivity : AppCompatActivity() {
lateinit var socket: Socket
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
try {
socket = IO.socket("IP주소")
Log.d("TAG", "try")
} catch (e: URISyntaxException) {
e.printStackTrace();
}
socket.connect()
}
}
코드는 이렇게 간단하게 연결 되는지만 확인하도록 일단 바꿧는데,
try내부의 로그는 찍혀서 코드가 실행되긴 했다고 생각하는데
socket.connect()부분이 제대로 실행이 안되는 것 같습니다...
manifast에 인터넷 권한 추가했고, http접속도 허용했습니다.
검색을 해보니 안드로이드에서 로컬호스트 시뮬레이션 포트가 막혀있어서 그렇다는 말을 봤는데
검색해봐도 마땅한 해결법을 찾지 못해서 여기에 글 올립니다.
도움 주시면 감사할 것 같습니다.
안드로이드나 서버에서 특별한 에러는 발생하지 않습니다 ㅠ
아 그리고 메인 쓰레드에서 실행해서 안되는건가 싶어서 코루틴 사용해서
IO로도 돌려봣는데 동일하게 안됐습니다 ㅠㅠ
서버 주소는 cmd에서 ipconfig실행 시 나오는 IPv4주소로 설정했습니다.