Java SocketServer control Image, DBConnect, String
package com.tistory.tansanc; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import javax.imageio.ImageIO; class DBConnect { ResultSet rs = null; Connection conn = null; Statement stmt = null; public DBConnect() { try { String url = "jdbc:sqlserver://192.168.10.17:1433;DatabaseName=MSSQLSERVER"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(url, "sa", "1234"); stmt = conn.createStatement(); } catch (Exception e) { } } public void finalize() { try { rs.close(); stmt.close(); conn.close(); } catch (Exception e) { } } } class PerClientThread extends Thread { Socket s; static ArrayListsocketArray = new ArrayList (); static DBConnect dbc; public PerClientThread() { } @Override public void run() { // TODO Auto-generated method stub socketArray.add(s); BufferedReader br; try { br = new BufferedReader(new InputStreamReader(s.getInputStream())); String temp; while ((temp = br.readLine()) != null) { // DB Query if (temp.startsWith("select")) { try { dbc.rs = dbc.stmt.executeQuery("SELECT * FROM [dbo].[TESTDB]"); while (dbc.rs.next()) { String field1 = dbc.rs.getString("Date"); String field2 = dbc.rs.getString("FileName"); System.out.println(field1); System.out.println(field2); java.sql.Blob blb = dbc.rs.getBlob("Image"); byte[] imagebytes = blb.getBytes(0, (int) blb.length()); BufferedImage theImage = ImageIO.read(new ByteArrayInputStream(imagebytes)); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } temp = "SQL:" + temp; System.out.println(temp); } // Arduino else if (temp.startsWith("insert")) { } // Arduino else if (temp.startsWith("image")) { int size = Integer.parseInt(br.readLine()); DataInputStream inputStream = new DataInputStream(s.getInputStream()); byte[] imageAr = new byte[size]; inputStream.read(imageAr, 0, size); BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageAr)); System.out.println("Received " + image.getHeight() + "x" + image.getWidth() + ": " + System.currentTimeMillis()); ImageIO.write(image, "png", new File("C:\\test2.png")); } // Arduino else if (temp.startsWith("to")) { } System.out.print(s.getInetAddress() + " : "); System.out.println(temp); for (int i = 0; i < socketArray.size(); i++) { PrintWriter os = new PrintWriter(socketArray.get(i).getOutputStream(), true); os.print(s.getInetAddress() + " : "); os.println(temp); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } super.run(); } } public class Server { public static void main(String[] args) throws Exception { System.out.println("Server Side"); ServerSocket ss = new ServerSocket(33333); Socket s; while (true) { s = ss.accept(); PerClientThread pct = new PerClientThread(); pct.s = s; pct.dbc = new DBConnect(); pct.start(); } } }
package com.tistory.tansanc; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JTextField; class MyFrame extends JFrame { public static JTextArea textArea; JTextField textField; PrintWriter out; Socket s; public MyFrame() { textArea = new JTextArea(); textField = new JTextField(); add(BorderLayout.CENTER, textArea); add(BorderLayout.SOUTH, textField); textField.addActionListener(new FieldListener()); setSize(300, 200); setTitle("채팅프로그램 Client"); setVisible(true); // GUI를 설계한다. } class FieldListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (textField.getText().compareTo("image") == 0) { BufferedImage image; ByteArrayOutputStream byteArrayOutputStream = null; DataOutputStream os = null; try { image = ImageIO.read(new File("C:\\test.png")); byteArrayOutputStream = new ByteArrayOutputStream(); ImageIO.write(image, "png", byteArrayOutputStream); os = new DataOutputStream(s.getOutputStream()); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { int size = byteArrayOutputStream.size(); out.println("image"); out.println(size); os.write(byteArrayOutputStream.toByteArray()); os.flush(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } else { out.println(textField.getText()); textField.setText(""); } // 메세지 보내기 } } } class SendThread extends Thread { PrintWriter out; public SendThread(PrintWriter out) { this.out = out; } @Override public void run() { // TODO Auto-generated method stub super.run(); } } class RecvThread extends Thread { BufferedReader in; public RecvThread(BufferedReader in) { this.in = in; } @Override public void run() { String temp; try { while ((temp = in.readLine()) != null) { MyFrame.textArea.setText(MyFrame.textArea.getText() + "\n" + temp); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class ClientModule { MyFrame mFrame; SendThread mSendThread; RecvThread mRecvThread; Socket s; // 서버에 패킷을 보내는 Thread // 서버로부터 패킷을 받는 Thread public ClientModule() // 준비 { try { s = new Socket("192.168.10.17", 33333); PrintWriter out = new PrintWriter(s.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); mFrame = new MyFrame(); // GUI 객체 mFrame.s = s; mFrame.out = out; mSendThread = new SendThread(out); mRecvThread = new RecvThread(in); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } void start() // 시작 { mSendThread.start(); mRecvThread.start(); } } public class Client { public static void main(String[] args) { ClientModule cm = new ClientModule(); // 초기화 작업 cm.start(); // Thread.start(); } }
'Programming > JAVA,JSP' 카테고리의 다른 글
Java CreateProcess Error=2 AccessControlException (0) | 2017.02.28 |
---|---|
Java Applet 설정 (0) | 2017.02.28 |
Get client IP, Location, Address using just JavaScript? (0) | 2016.04.26 |
Web Browser 점유율 통계 (0) | 2016.04.18 |
Activex Event use in JavaScript (0) | 2016.04.14 |