자바 소켓 채 팅 프로 그래 밍

13392 단어
1. TCP 통신
server

package com.socket;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;

public class SocketServer{
	
	private PrintWriter pw;
	private JFrame frame;
	private JPanel pane_buttom;
	private JSplitPane pane_center;

	//        ,        ,      
	private JScrollPane pane_showWindow;
	private JScrollPane pane_inputWindow;
	private JTextArea area_showWindow;
	private JTextArea area_inputWindow;
	
	private JButton btn_send;

	private Dimension dimension;//    area_showWindow      

	//                                            
	public SocketServer() {
		frame = new JFrame();
		pane_buttom = new JPanel();
		pane_showWindow = new JScrollPane();
		pane_inputWindow = new JScrollPane();
		area_showWindow = new JTextArea();
		area_inputWindow = new JTextArea();
		pane_center = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, pane_showWindow, pane_inputWindow);
		btn_send = new JButton("  ");

		dimension = new Dimension(50, 300);
	}

	//        
	public void showFrame(){
		initFrame();
		initChatTextArea();
		initButton();
		btn_send();
		socket();
	}

	//   
	public void initFrame(){
		frame.setTitle("   ");
		int width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
		int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
		frame.setBounds(width / 2, height / 2, 400, 450);
		frame.setVisible(true);
	}

	//               
	private void initChatTextArea(){
		//      
		pane_showWindow.getViewport().add(area_showWindow);
		pane_inputWindow.getViewport().add(area_inputWindow);
		//             
		area_showWindow.setEditable(false);
		//              
		pane_showWindow.setMinimumSize(dimension);
		frame.add(pane_center, BorderLayout.CENTER);
	}

	//    ,      
	public void initButton(){
		pane_buttom.add(btn_send);
		frame.add(pane_buttom, BorderLayout.SOUTH);
	}


	private void btn_send(){
		btn_send.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String info = area_inputWindow.getText();
				area_showWindow.append("   :"+info+"\r
"); pw.println(info); area_inputWindow.setText(""); } }); } private void socket(){ ServerSocket ss; try { ss = new ServerSocket(9988); // Socket s=ss.accept(); InputStreamReader isr=new InputStreamReader(s.getInputStream()); BufferedReader br=new BufferedReader(isr); //PrintWriter socket socket OutputStream pw=new PrintWriter(s.getOutputStream(),true); // while(true) { // String info=br.readLine(); // area_showWindow.append(" :"+info+"\r
"); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SocketServer chat = new SocketServer(); chat.showFrame(); } }

client

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;

public class Test {
	private PrintWriter pw;
	private JFrame frame;
	private JPanel pane_buttom;
	private JSplitPane pane_center;

	//         ,        ,      
	private JScrollPane pane_showWindow;
	private JScrollPane pane_inputWindow;
	private JTextArea area_showWindow;
	private JTextArea area_inputWindow;

	private JButton btn_send;

	private Dimension dimension;//     area_showWindow      

	//    
	public Test() {
		frame = new JFrame();
		pane_buttom = new JPanel();
		pane_showWindow = new JScrollPane();
		pane_inputWindow = new JScrollPane();
		area_showWindow = new JTextArea();
		area_inputWindow = new JTextArea();
		pane_center = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false,
				pane_showWindow, pane_inputWindow);
		btn_send = new JButton("  ");
		dimension = new Dimension(50, 300);
	}

	//         
	public void showFrame() {
		initFrame();
		initChatTextArea();
		initButton();
		btn_send();
		socket();
	}

	//    
	public void initFrame() {
		frame.setTitle("   ");
		int width = (int) Toolkit.getDefaultToolkit().getScreenSize()
				.getWidth();
		int height = (int) Toolkit.getDefaultToolkit().getScreenSize()
				.getHeight();
		frame.setBounds(width / 2, height / 2, 400, 450);
		frame.setVisible(true);
	}

	//                
	private void initChatTextArea() {
		//       
		pane_showWindow.getViewport().add(area_showWindow);
		pane_inputWindow.getViewport().add(area_inputWindow);
		//              
		area_showWindow.setEditable(false);
		//              
		pane_showWindow.setMinimumSize(dimension);
		frame.add(pane_center, BorderLayout.CENTER);
	}

	//     ,      
	public void initButton() {
		pane_buttom.add(btn_send);
		frame.add(pane_buttom, BorderLayout.SOUTH);
	}

	private void btn_send() {
		btn_send.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String info = area_inputWindow.getText();
				area_showWindow.append("   : " + info + "\r
"); pw.println(info); area_inputWindow.setText(""); } }); } // @SuppressWarnings("all") private void socket() { try { Socket socket = new Socket("127.0.0.1", 9988); InputStreamReader isr = new InputStreamReader(socket.getInputStream()); BufferedReader br = new BufferedReader(isr); //PrintWriter socket pw = new PrintWriter(socket.getOutputStream(), true); while (true) { // String info = br.readLine(); area_showWindow.append(" : " + info + "\r
"); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Test chat = new Test(); chat.showFrame(); } }

2. UDP 통신
server

package com.socket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;


public class SocketServer {
	
	public static void main(String[] args) {
		//TCP  
//		ServerSocket serverSocket = null ;
//		try {
//			serverSocket = new ServerSocket(3000);
//			Socket socket = serverSocket.accept();
//			InputStream inputStream = socket.getInputStream();
//			byte[] byt = new byte[1024];
//			int length = 0;
//			//      
//	        while ((length = inputStream.read(byt)) != -1) {  
//	        	System.out.println(new String(byt,0,length));
//	        }  
//		} catch (Exception e) {
//		}
		//UDP  
		try {
			DatagramSocket serverSocket = new DatagramSocket(3000);
			byte[] byt = new byte[1024];
			DatagramPacket packet = new DatagramPacket(byt, byt.length);
			serverSocket.receive(packet);
			System.out.println(new String(packet.getData()));
			serverSocket.close();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
}


client

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;


public class Test {

	public static void main(String[] args) {
//		Socket socket = null ;
//		try {
//			socket = new Socket("192.168.1.192", 3000);
//			OutputStream outputStream = socket.getOutputStream();
//			InputStream inputStream = new FileInputStream("D:123.txt");
//			byte[] byt = new byte[1024];
//			int length = 0;
//			//      
//	        while ((length = inputStream.read(byt)) != -1) {  
//	        	outputStream.write(byt,0,length);
//	        }
//	        inputStream.close();
//		} catch (Exception e) {
//		}
		
		try {
			DatagramSocket socketClient = new DatagramSocket(3001);
			InetAddress address = InetAddress.getByName("192.168.1.192");
			byte[] content = "Just test".getBytes();
			DatagramPacket packet = new DatagramPacket(content, content.length,address,3000);
			socketClient.send(packet);
			socketClient.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


3. 수다
server

package com.socket;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author:
 * @TODO:Socket   
 */
public class SocketServer {

	public static void main(String[] args) {
		// TCP  
		ServerSocket serverSocket = null;
		try {
			serverSocket = new ServerSocket(3000);
			Socket socket = serverSocket.accept();
			InputStream inputStream = socket.getInputStream();
			byte[] byt = new byte[1024];
			int length = 0;
			//     
			while ((length = inputStream.read(byt)) != -1) {
				System.out.println(new String(byt, 0, length));
			}
		} catch (Exception e) {
		}
		// UDP  
		// try {
		// DatagramSocket serverSocket = new DatagramSocket(3000);
		// byte[] byt = new byte[1024];
		// DatagramPacket packet = new DatagramPacket(byt, byt.length);
		// serverSocket.receive(packet);
		// System.out.println(new String(packet.getData()));
		// serverSocket.close();
		// } catch (SocketException e) {
		// e.printStackTrace();
		// } catch (IOException e) {
		// e.printStackTrace();
		// }
	}

}


client

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Socket socket = null;
		InputStream inputStream = null;
		Scanner scanner = new Scanner(System.in);
		String content = "";
		try {
			socket = new Socket("192.168.1.192", 3000);
			while (!(content = scanner.nextLine()).equals("exit")) {
				OutputStream outputStream = socket.getOutputStream();
				inputStream = new ByteArrayInputStream(content.getBytes());
				byte[] byt = new byte[1024];
				int length = 0;
				//     
				while ((length = inputStream.read(byt)) != -1) {
					outputStream.write(byt, 0, length);
				}
			}
			scanner.close();
			inputStream.close();
		} catch (Exception e) {
		}

		// try {
		// DatagramSocket socketClient = new DatagramSocket(3001);
		// InetAddress address = InetAddress.getByName("192.168.1.192");
		// byte[] content = "Just test".getBytes();
		// DatagramPacket packet = new DatagramPacket(content,
		// content.length,address,3000);
		// socketClient.send(packet);
		// socketClient.close();
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
	}
}


좋은 웹페이지 즐겨찾기