마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 코틀린 tcp 서버.

0 추천

안녕하세요.

 

제가 tcp를 통하여 통신을 할려고 합니다..

기존 클라이언트는 잘 하였는데요..

지금 서버는 통신이 되지 않는거 같습니다.

안드로이드는 처음이라서.

일단 따로 클래스를 만들어 변수를 이렇게 주고.

버튼을 누르면 함수를 실행시킵니다. 애뮬레이터를 통하여 테스트를 하는데 클라이언트가 접속을 하지 못합니다.. 어떤것을 체크해야 될까요??

var severSocket:ServerSocket?=null
var socket: Socket? = null
fun createSocket( port: Int = 4322) {
    severSocket= ServerSocket(port)
    Thread {
        try {
            socket = severSocket!!.accept()
            readData(); true
        } catch (e: IOException) {
            false
        }.let { stateSubject.onNext(it) }
    }.start()

이런식으로 하였습니다..

어떤부분을 봐야 할까요??

혹시몰라서 이렇게 찍어 보면.. 

 

println(severSocket!!.localSocketAddress)
println(severSocket!!.inetAddress)
println(severSocket!!.localPort)
println(severSocket!!.isBound)

이렇게 나옵니다.

I/System.out: ::/:::4322
                 ::/::
                 4322
                 true

혹시 참고 할만한 예제 같은거 있으시거나 체크 할 부분이 잇으면 말씀부탁드립니다..

fdsajfkl (120 포인트) 님이 2019년 4월 10일 질문

1개의 답변

0 추천

인터넷 퍼미션을 주신게 맞다면, 포트 포워딩 이슈일 겁니다.

애뮬레이터의 경우 PC 포트를 포워딩 해서 쓰는 것이라 redir add 로 사용할 포트를 추가 해 줘야 데이터가 넘어가거든요.

https://arsviator.blogspot.com/2010/10/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-%EC%84%A4%EC%A0%95-android-emulator.html

애뮬레이터는 속도도 늦으니 가능하면 폰에  물려 개발하시는걸 추천합니다.

익명사용자 님이 2019년 4월 11일 답변
...