노력과 삽질 퇴적물
JAVA: 자바 기초 (4) 본문
11장. 네트워크 통신
0. CMD를 이용한 NW통신 테스트 방법 | |
1) 컴파일
javac 클라이언트_소스파일.java javac 서버_소스파일.java ->소스파일내에 패키지 선언이 있으면 절대 안 됩니다. 컴파일 에러가 납니다. 2) 실행 CMD창을 2개 띄워서 1개는 서버 실행, 다른 하나로 클라이언트 실행입니다. 참고로 서버파일을 먼저 실행한후에 클라이언트를 실행하는게 좋습니다.
java 클라이언트 파일명 java 서버파일명 * 제 예시코드에 잇는 서버들은 반복동작을 지정하지 않았기 때문에 1번만 클라이언트와 통신하고 종료됩니다. |
* 추천자료: "강이"의 JAVA 강좌: 자바의 소켓 프로그래밍(Socket Programming)
1. 소켓 네트워크 통신 ① 클라이언트 | |
//package chapter11; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.io.IOException; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class SocketClient { public static void main( String[] message ) throws IOException { try { InetAddress ia = InetAddress.getByName("_이_문자열내에_서버IP_"); Socket soc = new Socket(ia, 1234); OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream()); BufferedWriter bw = new BufferedWriter(osw, 512); PrintWriter pw = new PrintWriter(bw); pw.print("이 메시지는 영국에서 시작된 행운의...."); pw.flush();
InputStreamReader isr = new InputStreamReader(soc.getInputStream()); BufferedReader br = new BufferedReader(isr, 512);
while(true) { String str = br.readLine();
if(str == null) break;
System.out.print("서버 : " + str + "\n"); } pw.close(); bw.close(); osw.close(); soc.close(); }catch(UnknownHostException e){ System.out.print("NW 에러 : " + e );. }catch(IOException e){ System.out.print("IO 에러 : " + e); } } } |
1. 소켓 네트워크 통신 ② 서버 | |
//package chapter11; import java.net.Socket; import java.net.ServerSocket; import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; import java.io.PrintWriter; public class SocketServer { public static void main( String[] message ) throws IOException { System.out.print("서버 준비중.\n"); ServerSocket ss = new ServerSocket(1234); Socket soc = ss.accept();
InputStreamReader isr = new InputStreamReader(soc.getInputStream()); BufferedReader br = new BufferedReader(isr, 512);
while(true) { String data = br.readLine();
if(data==null) break;
System.out.print("msg : " + data); }
//출력 OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream()); BufferedWriter bw = new BufferedWriter(osw, 512); PrintWriter pw = new PrintWriter(bw); pw.print("수신확인"); pw.flush();
isr.close(); // 스트림 리더 종료. br.close(); // 버퍼리더 종료. pw.close(); // 프린터 리더 종료. bw.close(); // 버퍼 리더 종료 soc.close(); ss.close(); } } |
2. UDP 네트워크 통신 ① 클라이언트 | |
//package chapter11; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; import java.io.IOException; import java.util.Scanner; public class UDP_Client { public static void main( String[] ar ) throws Exception { try { Scanner sc = new Scanner(System.in); System.out.print("전송할 내용 : "); String data = sc.next();
InetAddress ia = InetAddress.getByName("서버_IP주소"); DatagramPacket dp = new DatagramPacket(data.getBytes(), //바이트 분할 data.getBytes().length, //바이트 길이 ia, //주소 789 //포트번호 ); DatagramSocket soc = new DatagramSocket(); soc.send(dp); soc.close(); }catch(UnknownHostException e){ System.out.print("NW 에러 : " + e); }catch(IOException e){ System.out.print("IO 에러 : " + e); } } } |
2. UDP 네트워크 통신 ② 서버 | |
//package chapter11; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDP_Server { public static void main( String[] ar ) throws IOException { System.out.print("서버 준비중");
byte[] by = new byte[65508]; DatagramPacket dp = new DatagramPacket(by, by.length); DatagramSocket soc = new DatagramSocket(789); soc.receive(dp);
String str = new String(dp.getData()).trim(); System.out.print("str : " + str + "\n"); soc.close(); } } |
3. 멀티캐스트 소켓 통신 | |
//package chapter11; import java.net.InetAddress; import java.net.DatagramPacket; import java.net.MulticastSocket; import java.net.UnknownHostException; import java.io.IOException; import java.util.Scanner; public class MulCastSocket { public static void main(String[] args) { try { Scanner sc = new Scanner(System.in); System.out.print("전송물 : "); String str = sc.next();
InetAddress ia = InetAddress.getByName("서버_IP주소"); DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, ia, 1000); MulticastSocket ms = new MulticastSocket();//여기에 주의 ms.send(dp); ms.close(); }catch(UnknownHostException e){ System.out.print("호스트가 존재하지 않습니다 : " + e); }catch(IOException e){ System.out.print("NW에러 : " + e); } } } |
12장. DB연동(오라클 DB)
0. 이클립스와 오라클 드라이버 연결설정 | |
|
1. DB기본연결 절차 및 형식 -> 추천자료: JDBC 프로그래밍 방법 | |
//package chapter12; import java.sql.DriverManager; import java.sql.SQLException; public class Exam131 { public static void main(String[] args) { // 1단계. DB연결. 드라이브 설정 try { Class.forName("oracle.jdbc.driver.OracleDriver"); //System.out.print("드라이버 검색 성공\n"); }catch(ClassNotFoundException e){ System.out.print("드라이버 검색 실패 : " + e); }
// 2단계. 연결 try { String url = "jdbc:oracle:thin:@오라클서버IP:포트번호:xe "; String id = "hr"; String pass = "1234"; DriverManager.getConnection(url, id, pass); //System.out.print("연결 성공\n"); }catch(SQLException e){ System.out.print("연결 실패 : " + e); } } } |
2. DB 레코드 검색 -> ResultSet은 DB에서 1개 이상의 값을 뽑아올때 필요 | |
//package chapter12; import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; public class Exam134 { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; String sql = null;
// 1단계. DB연결. 드라이브 설정 try { Class.forName("oracle.jdbc.driver.OracleDriver"); }catch(ClassNotFoundException e){ System.out.print("드라이버 에러 : " + e); }
// 2단계. 연결관리 객체 생성 try { String url = "jdbc:oracle:thin:@오라클서버IP:포트번호:xe "; String id = "hr"; String pass = "1234"; conn = DriverManager.getConnection(url, id, pass);
System.out.print("연결\n"); }catch(SQLException e){ System.out.print("연결에러 : " + e); }
try { // 3단계. 작업관리 sql="select * from address"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); // 0~n으로 쌓인 자료에 대한 커서는 0번지 앞에 있다.
// 4단계. 결과처리 while(rs.next()) { int num = rs.getInt("num"); String name = rs.getString("name"); String phone = rs.getString("phone"); String email = rs.getString("mail"); String city = rs.getString("city"); Date birth = rs.getTimestamp("birth");
System.out.print(num + "\t" + name + "\t " + phone + "\t" + email + "\t" + city + "\t" + birth + "\n"); } rs.close(); pstmt.close(); conn.close(); }catch(SQLException e){ System.out.print("select 에러 : " + e); } } } |
3. DB 레코드 삽입 -> 레코드를 추가하는데 ResultSet은 불필요. | |
//package chapter12; import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class Exam135 { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; String sql = null;
try { Class.forName("oracle.jdbc.driver.OracleDriver"); }catch(ClassNotFoundException e){ System.out.print("드라이버 에러 : " + e); }
try { String url = "jdbc:oracle:thin:@오라클서버IP:포트번호:xe"; //오라클 서버 String id = "hr"; String pass = "1234"; conn = DriverManager.getConnection(url, id, pass);
System.out.print("연결\n"); }catch(SQLException e){ System.out.print("연결에러 : " + e); }
try { Scanner sc = new Scanner(System.in);
System.out.print("번호 : "); int num = sc.nextInt();
System.out.print("이름 : "); String name = sc.next();
System.out.print("전화번호 : "); String phone = sc.next();
System.out.print("이메일 : "); String mail = sc.next();
System.out.print("거주지 : "); String city = sc.next();
System.out.print("생년월일 : "); String birth = sc.next();
sql = "insert into address values(?, ?, ?, ?, ?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, num); pstmt.setString(2, name); pstmt.setString(3, phone); pstmt.setString(4, mail); pstmt.setString(5, city); pstmt.setString(6, birth); pstmt.executeUpdate();
System.out.print("DB OK"); pstmt.close(); conn.close(); }catch(SQLException e){ System.out.print("입력에러 : " + e); } } } |
13장. GUI-SWING
JAVA: GUI프로그래밍 참조.
'📂기초 및 세팅 note > 언어. JAVA & JDK 계열' 카테고리의 다른 글
JAVA: 이벤트처리 (0) | 2012.08.23 |
---|---|
JAVA: GUI 및 프레임 (2) | 2012.08.21 |
이클립스: 설정 및 팁 (0) | 2012.07.20 |
JAVA: 자바 기초 (3) (0) | 2012.07.17 |
JAVA: 자바 기초 (2) (0) | 2012.07.11 |