
์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ ๊ณตํ๋ ํ๋กํ ์ฝ
BUT โ
๐๐ผ ์ ์ก ์๋๊ฐ ๋๋ฆผ
๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ
BUT โ
๐๐ผ ์ ์ก ์๋๊ฐ ๋น ๋ฆ
| ํญ๋ชฉ | TCP | UDP |
|---|---|---|
์ฐ๊ฒฐํ/๋น์ฐ๊ฒฐํ | ์ฐ๊ฒฐํ | ๋น์ฐ๊ฒฐํ |
๋ฐ์ดํฐ ์ ์ก ์ ๋ขฐ์ฑ | ๋์(์์ฐจ ์ ๋ฌ, ์ค๋ฅ ๋ณต๊ตฌ ์ง์) | ๋ฎ์(์์ฐจ ์ ๋ฌ, ์ค๋ฅ ๋ณต๊ตฌ ๋ฏธ์ง์) |
์ ์ก ์๋ | ๋๋ฆผ | ๋น ๋ฆ |
ํค๋ ํฌ๊ธฐ | ํผ | ์์ |
์ฌ์ฉ ์ฌ๋ก | ์ด๋ฉ์ผ, ์น ์ํ ๋ฑ ์ ๋ขฐ์ฑ์ด ์ค์ํ ์๋น์ค | ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ, VoIP ๋ฑ ์ค์๊ฐ์ฑ์ด ์ค์ํ ์๋น์ค |
getByName(String host) : ํธ์คํธ ์ด๋ฆ์ ํตํด IP ์ฃผ์ ์ป๊ธฐgetHostAddress() : IP ์ฃผ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํSocket(String host, int port) : ์๋ฒ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ก ์์ผ ์์ฑgetInputStream() : ์์ผ์ InputStream ์ป๊ธฐgetOutputStream() : ์์ผ์ OutputStream ์ป๊ธฐServerSocket(int port) : ํน์ ํฌํธ์ ๋ํด ์๋ฒ ์์ผ์ ์์ฑํจaccept() : ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๋ฉด ์๋ก์ด ์์ผ ๋ฐํ DatagramPacket(byte[] buf, int length, InetAddress address, int port) : ํจํท ์์ฑgetData() : ํจํท์ ๋ฐ์ดํฐ ๋ฐํDatagramSocket(int port) : ํน์ ํฌํธ์ ๋ํด ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ ์์ฑsend(DatagramPacket p) : ํจํท ์ ์กreceive(DatagramPacket p) : ํจํท ์์ import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocekt(8000);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = in.readLine();
out.println("Hello, Client! You sent: " + message);
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
InetAddress serverAddr = InetAddress.getByName("localhost");
Socket socket = new Socket(serverAddr, 8000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("Hello, Server!");
String response = in.readLine();
System.out.println("Server says: " + response);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.net.*;
public class UDPReceiver {
public static void main(String[] args) {
try {
DatagramStocket datagramSocket = new DatagramSocket(8000);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received message: " + message);
datagreamSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.net.*;
public class UDPSender {
public static void main(String[] args) {
try {
InetAddress receiverAddr = InetAddress.getByName("localhost");
int port = 8000;
String message = "Hello, Receiver!";
byte[] buffer = message.getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, receiverAddr, port);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);
datagramSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}