package net;
import java.net.InetAddress;
public class InetAddressEx1 extends MFrame {
public static void main(String[] args) {
try {
// ip 및 도메인 객체화
InetAddress add = InetAddress.getLocalHost();
System.out.println("Host Name:" + add.getHostName());
System.out.println("Host Address:" + add.getHostAddress());
add = InetAddress.getByName("auction.co.kr");
System.out.println("auction address:" + add.getHostAddress());
InetAddress adds[] = InetAddress.getAllByName("naver.com");
for (int i = 0; i < adds.length; i++) {
System.out.println("naver:" + adds[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

package net;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.UnknownHostException;
public class InetAddressFrameEx1 extends MFrame implements ActionListener {
TextArea ta;
TextField tf;
Label l;
private Button lookup;
public InetAddressFrameEx1() {
setTitle("InetAddress Example");
Panel p = new Panel();
p.setLayout(new BorderLayout());
p.add(new Label("호스트이름"), BorderLayout.NORTH);
p.add(tf = new TextField("", 40));
p.add(lookup = new Button("호스트 정보 얻기"), BorderLayout.SOUTH);
tf.addActionListener(this);
lookup.addActionListener(this);
add(p, BorderLayout.NORTH);
ta = new TextArea("인터넷주소\n");
ta.setFont(new Font("Dialog", Font.BOLD, 15));
ta.setForeground(Color.BLUE);
ta.setEditable(false);
add(ta);
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
InetAddress intAddr;
try {
intAddr = InetAddress.getLocalHost();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(obj == lookup||obj == tf) {
String host = tf.getText().trim();
try {
intAddr = InetAddress.getByName(host);
String add = intAddr.getHostName();
String ip = intAddr.getHostAddress();
ta.append(" " +add+"\n");
ta.append(" " + ip +"\n");
} catch (Exception e2) {
ta.append(" [" + host + "]\n");
ta.append("해당되는 호스트가 없습니다.");
}
tf.setText("");
tf.requestFocus();
}
}
public static void main(String[] args) {
new InetAddressFrameEx1();
}
}

package net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class UrlEx1 {
public static void main(String[] args) {
String str = "https://search.naver.com:80/search.naver?" + "where=nexearch&sm=top_hty&fbm=1&ie=utf8&"
+ "query=java#top";
try {
URL url = new URL(str);
System.out.println("Protocol " + url.getProtocol());
System.out.println("Host " + url.getHost());
System.out.println("Port " + url.getPort());
System.out.println("Path " + url.getPath());
System.out.println("Query " + url.getQuery());
System.out.println("Filename " + url.getFile());
System.out.println("ref " + url.getRef());
url = new URL("https://auction.co.kr");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8"));
String line = "";
while(true) {
line = br.readLine();
if(line==null)
break;
System.out.println(line);
}
br.close();
System.out.println("End~~~~~~~~~~");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package net;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FileDialog;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
public class URLFrameEx1 extends MFrame implements ActionListener {
TextArea ta;
TextField tf;
Button connect;
Button save;
FileDialog saveDialog;
URL url;
public URLFrameEx1() {
super(500, 500);
setTitle("ViewHost");
Panel p = new Panel();
p.add(tf = new TextField("http://", 40));
p.add(connect = new Button("connect"));
p.add(save = new Button("save"));
ta = new TextArea();
add(p, BorderLayout.NORTH);
add(ta);
save.setEnabled(false);
connect.addActionListener(this);
save.addActionListener(this);
tf.addActionListener(this);
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
String str = tf.getText();
if (obj == tf || obj == connect) {
String host = tf.getText().trim();
try {
url= new URL(host);
} catch (Exception e2) {
ta.append("해당되는 호스트가 없습니다.");
}
ta.setText("");
connectHost(url);
save.setEnabled(true);
} else if (obj == save) {
createFile(url.getHost(), ta.getText());
save.setEnabled(false);
tf.setText("http://");
ta.setText("");
ta.append("저장하였습니다.");
tf.requestFocus();
}
}
public void connectHost(URL url) {
try {
BufferedReader br = new BufferedReader
(new InputStreamReader(url.openStream(),"UTF-8"));
String line = "";
while(true) {
line = br.readLine();
if(line==null) break;
ta.append(line+"\n");
}
br.close();
} catch (Exception e) {
ta.append("해당하는 호스트가 없습니다.");
}
}
public void createFile(String file, String content) {
try {
FileWriter fw = new FileWriter("net/"+file+".html");
fw.write(content);
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
URLFrameEx1 ex = new URLFrameEx1();
}
}

package net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServer {
public static final int PORT = 8000;
public EchoServer() {
try {
int cnt = 0; // Cient 접속 개수
ServerSocket server = new ServerSocket(PORT);
System.out.println("EchoServer Start.....");
while (true) {
// Client 가 접속할때 까지 대기 상태
Socket sock = server.accept();
EchoThread et = new EchoThread(sock);
et.start();
cnt++;
System.out.println("Client " + cnt + " Socket");
}
} catch (Exception e) {
e.printStackTrace();
}
}
// Client 를 대응관리 하기 위한 Thread 상속 내부 클래스 선언
class EchoThread extends Thread {
BufferedReader in;
PrintWriter out;
Socket sock;
public EchoThread(Socket sock) {
try {
this.sock = sock;
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream(), true);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
// Client 가 접속하면 처음으로 받는 메세지
out.println("Hello Enter BYB exit");
while(true) {
// Client 가 메세지 보낼때까지 대기
String line = in.readLine();
if(line == null) {
break;
}else
out.println("Echo: " +line);
if(line.equalsIgnoreCase("BYB"))
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
EchoServer server = new EchoServer();
}
}
클라이언트
package net;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
public class EchoFrameClient extends JFrame
implements ActionListener{
Button btn1, btn2;
TextField tf1, tf2;
TextArea ta;
Panel p1, p2;
BufferedReader in;
PrintWriter out;
static final int PORT = 7000;
public EchoFrameClient() {
setSize(350, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("EchoFrameClient");
p1 = new Panel();
p1.add(new Label("HOST ",Label.CENTER));
p1.add(tf1 = new TextField("127.0.0.1",25));
p1.add(btn1 = new Button("Connect"));
p2 = new Panel();
p2.add(new Label("CHAT ",Label.CENTER));
p2.add(tf2 = new TextField("",25));
p2.add(btn2 = new Button("SEND"));
tf1.addActionListener(this);
tf2.addActionListener(this);
btn1.addActionListener(this);
btn2.addActionListener(this);
add(p1,BorderLayout.NORTH);
add(ta=new TextArea());
add(p2,BorderLayout.SOUTH);
setVisible(true);
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if(obj == tf1 || obj == btn1 /*connect*/) {
connect(tf1.getText().trim());
tf1.setEnabled(false);
btn1.setEnabled(false);
tf2.requestFocus();
}else if(obj == tf2 || obj == btn2 /*chat*/) {
// tf2의 입력된 문자열을 서버로 보낸다
out.println(tf2.getText());
try {
// 서버로 부터 문자열 전송 받음
ta.append(in.readLine()+"\n");
tf2.setText("");
tf2.requestFocus();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public void connect(String host){
try {
Socket sock = new Socket(host,PORT);
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream(), true);
// 서버에서 최초로 보내는 메시지 전달
ta.append(in.readLine() + "\n");
tf2.requestFocus();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new EchoFrameClient();
}
}


서버 프레임에서 Connect 할시 클라이언트에서 Client Socket 이라는 반응이온다.