보초의 코딩일기장

코틀린을 이용한 사진 관리 어플 만들기 (3) 본문

Android/Kotlin

코틀린을 이용한 사진 관리 어플 만들기 (3)

장보비 2020. 1. 7. 21:23
 private inner class ProcessTask(var start: Int, var end: Int) : Thread() {

        override fun run() {
            var serverSocket: ServerSocket? = null
            try {
                var hostname: String? = null

                var connectSock: Socket? = null
                var serverDos: DataOutputStream? = null

                var receiveSocket: Socket? = null
                var socketAddress: SocketAddress

                for (i in start until end) {
                    if (mSharedData.isConnected) {
                        break
                    }
                    try {
                        // Server IP 요청을 위한 Server 접속
                        hostname = mPartialAp[0] + "." + mPartialAp[1] + "." + mPartialAp[2] + "." + i
                        socketAddress = InetSocketAddress(hostname, Constants.CONNECT_PORT)
                        Log.d(Constants.TAG, hostname + " : 서버 연결 시도...")
                        try {
                            connectSock = Socket()
                            connectSock?.connect(socketAddress, mTimeout)
                        } catch (e: SocketTimeoutException) {
                            continue
                        }

                        Log.d(Constants.TAG, hostname + " : 서버 응답 확인!!!")
                    } catch (e: ConnectException) {
                        continue
                    }
                   ....

 

저번에 봤던 ProcessTask 를 좀 더 자세히 살펴본다면,

hostname으로 아이피를 가져온 다음 hostname 과 포트를 socketaddress에 담고 서버에 접근하는 것 같은데

서버에 반응이 하나도 없다.

 

Constants Class 에서 아래와 같이 포트를 설정하였는데

...
val CONNECT_PORT=1255
val FILE_SEND_PORT=1256

 

Servermain.kt

serverSocket =ServerSocket(connectPort) //receivePort 에서 connectPort로 변경
        println("서버가 시작되었습니다.")
        serverLayout.mConnectInfo.text="연결 대기 중"
        //연결되면 통신용 소켓 생성
        socket = serverSocket.accept()
        println("클라이언트와 연결되었습니다.")

 

혹시 몰라 포트번호를 바꿔봤더니 연결이 되다가 곧바로 끊어져 버린다.

예제대로 receivePort로 하면 접속 조차 안 되고, connectPort로 하면 접속하자마자 끊긴다.

아무래도 소켓통신을 잘 몰라서 발생하는 문제인 것 같당.

 

그런데, 재부팅 하고 위 코드를 그대로 적용시키니 서버 접속이 되었다!

 

 

드디어 PC 목록에 뜨게 되었다!

 

 

서버 응답도 성공!

 

지금은 임시방편으로 포트를 바꾸어서 접속이 되었지만

여태까지 왜 안되었는지에 대해서 더 조사해봐야겠다.

 


 

#코틀린 #이것만 #보면 #돼

책은 불친절한 부분이 많이 존재한다.

코드에 대한 부분이 뒤죽박죽이어서 차례대로 따라하면 실행이 곧 잘 되지 않는다.

그래서 사전에 지식이 있는 사람이 읽기에 딱 좋은 책이다:)

어느 부분이 뒤죽박죽이고, 어디를 수정해야 할지 딱 보이기 때문이다!

 

애초에 독자 대상이 코틀린, 안드로이드를 다뤄본 사람이기 때문에 그런 것 같다.

예제에 있는대로 따라하면 실행이 안되니 갑갑할 뿐이다. (하지만 이건 내 실력 때문이라는 것을 안다.)

 

거의 4일을 삽질했지만.... 삽질한 만큼 지식으로 돌아오기 때문에 이 책을 산 것에 대해 후회는 없다.

그냥 내 실력을 탓할 뿐이다.....

삽질은 좋은 것이다.. 아마도..,,

 

Buy me a coffeeBuy me a coffee
Comments