import java.net.ServerSocket
fun main(){
// 사용할 포트번호
var portNumber = 55555
// 서버 객체를 생성한다.
val serverSocket = ServerSocket(portNumber)
// 사용자 접속을 대기한다.
val socket = serverSocket.accept()
println()
socket.close()
serverSocket.close()
}
<uses-permission android:name="android.permission.INTERNET"/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="서버 접속" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:text="TextView" />
</LinearLayout>
package com.test.android91_socketclient
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.test.android91_socketclient.databinding.ActivityMainBinding
import java.net.Socket
import kotlin.concurrent.thread
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
val SERVER_IP ="192.168.0.22"
val SERVER_PORT = 55555
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
activityMainBinding.run {
button.setOnClickListener {
thread {
// 소캣 객체를 생성한다.
val socket = Socket(SERVER_IP,SERVER_PORT)
runOnUiThread{
textView.text = socket.toString()
}
socket.close()
}
}
}
}
}
// 클라이언트에게 데이터를 전달한다.
dataOutputStream.writeInt(100)
dataOutputStream.writeDouble(11.11)
dataOutputStream.writeBoolean(true)
dataOutputStream.writeUTF("서버가 보낸 문자열")
// 클라이언트에게 데이터를 수신 받는다.
val data1 = dataInputStream.readInt()
val data2 = dataInputStream.readDouble()
val data3 = dataInputStream.readBoolean()
val data4 = dataInputStream.readUTF()
println("data1 : $data1")
println("data2 : $data2")
println("data3 : $data3")
println("data4 : $data4")
activityMainBinding.run {
button.setOnClickListener {
thread {
// 소캣 객체를 생성한다.
val socket = Socket(SERVER_IP,SERVER_PORT)
// 스트림을 추출한다.
val inputStream = socket.getInputStream()
val outputStream = socket.getOutputStream()
val dataInputStream = DataInputStream(inputStream)
val dataOutputStream = DataOutputStream(outputStream)
// 서버로 부터 데이터를 수신 받는다.
val data1 = dataInputStream.readInt()
val data2 = dataInputStream.readDouble()
val data3 = dataInputStream.readBoolean()
val data4 = dataInputStream.readUTF()
// 서버에게 데이터를 전달한다.
dataOutputStream.writeInt(200)
dataOutputStream.writeDouble(22.22)
dataOutputStream.writeBoolean(false)
dataOutputStream.writeUTF("클라이언트가 보낸 문자열")
runOnUiThread{
//textView.text = socket.toString()
textView.text = "data1 : ${data1}\n"
textView.append("data2 : ${data2}\n")
textView.append("data3 : ${data3}\n")
textView.append("data4 : ${data4}\n")
}
socket.close()
}
}
훌륭한 글이네요. 감사합니다.