public class TServer {
public static void main(String[] args) {
ServerSocket ss = null;
Socket s = null;
try {
ss = new ServerSocket(7777);
s = ss.accept();
Sender sender = new Sender(s);
Receiver receiver = new Receiver(s);
sender.start();
receiver.start();
} catch (Exception e) {
// TODO: handle exception
}
}
}
------------------------------------------------------------------------
public class TClient {
public static void main(String[] args) {
String IP = "127.0.0.1";
try {
Socket socket = new Socket(IP, 7777);
System.out.println("서버에 연결되었습니다.");
Sender sender = new Sender(socket);
Receiver receiver = new Receiver(socket);
sender.start();
receiver.start();
} catch (Exception e) {
// TODO: handle exception
}
}
}
----------------------------------------------------------------------
public class Receiver extends Thread {
Socket socket;
DataInputStream in;
public Receiver(Socket socket) {
try {
in = new DataInputStream(socket.getInputStream());
} catch (Exception e) {
// TODO: handle exception
}
}
public void run() {
Scanner sc = new Scanner(System.in);
while (in != null) {
try {
System.out.println(in.readUTF());
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
-----------------------------------------------------------------------
public class Sender extends Thread{
Socket socket;
DataOutputStream out;
String name;
public Sender(Socket socket) {
try {
out = new DataOutputStream(socket.getOutputStream());
name = "[" + socket.getInetAddress() + ":" + socket.getPort() + "]";
} catch (Exception e) {
// TODO: handle exception
}
}
public void run() {
Scanner sc = new Scanner(System.in);
while(out != null) {
try {
out.writeUTF(name + sc.nextLine());
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
- Web Server (= HTTP Server)
- WAS (Web Application Server)
직역하면 '항구'라는 뜻으로, 컴퓨터 관련 분야의 의미로는 운영 체제 통신의 종단점을 뜻한다.
하드웨어 : 컴퓨터의 주변 장치와 연결하기 위한 연결단 (물리적 통로)
소프트웨어 : 네트워크 서비스나 특정 프로세스를 식별하는 논리적 단위 (논리적 통로)
데이터 송수신시, Datalink 계층에서는 호스트의 NIC*로 MAC Address를 판별하고,
Network 계층에서는 IP Address로 목적지를 판별한다.
Mac Address와 IP Address를 통해 목적지 호스트까지 도달한 후에는 어떤 프로세스에서 데이터를 받을 것인지를 알아야 하는데 이 때 쓰이는 것이 포트 번호이다.
NIC(Network Interface Card) : 이더넷 카드 및 네트워크 어댑터라고도 하며, 응용프로그램에서 받은 데이터를 네트워크 형식에 맞게 변환하여 전송해 주는 기능을 하는 하드웨어 장치이다.
OSI 7 계층의 전송 계층에서 동작하는 TCP / UDP에서 Application이 상호구분을 위해 사용하는 번호이다.
IP 내에서 프로세스 구분을 위해 사용하며, 각 프로토콜의 데이터가 컴퓨터 내부의 논리적 통로를 따라 흐른다.
네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값.
Port Number는 16bits로 이루어져 있다.
2의 16승이므로 총 65536개의 번호가 존재할 수 있다.
번호는 크게 3가지로 분류한다.
1) Well-known Ports ( 잘 알려진 포트 ) : 0번 ~ 1023번
2) Registered Ports ( 등록된 포트 ) : 1024번 ~ 49151번
3) Dynamic Ports ( 동적 포트 ) : 49152번 ~ 65535번
통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.