자바 다 중 스 레 드 온라인 상담 실현(udp)

온라인 상담:두 사람 모두 발송 자 일 수도 있 고 수신 자 일 수도 있 으 며 인터넷 온라인 상담 의 정상 적 인 통신 을 실현 할 수 있 습 니 다.
채 팅 전송 스 레 드

package chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

/**
 *       :
 *    run      implements       Runnable   
 *        :Ctrl + O
 */
public class TalkSend implements Runnable {

 DatagramSocket socket = null;
 BufferedReader reader = null;

 private int fromPort; //     
 private String toIP; //     
 private int toPort; //     

 //  :Alt + Insert
 public TalkSend(int fromPort, String toIP, int toPort) {
  this.fromPort = fromPort;
  this.toIP = toIP;
  this.toPort = toPort;

  //   :Ctrl + Alt + T
  try {
   //                          
   socket = new DatagramSocket(fromPort);

   //    :     :System.in
   reader = new BufferedReader(new InputStreamReader(System.in));
  } catch (SocketException e) {
   e.printStackTrace();
  }
 }

 @Override
 public void run() {

  while (true){
   try {
    String data = reader.readLine();
    byte[] dataBytes = data.getBytes();
    DatagramPacket packet = new DatagramPacket(dataBytes, 0 , dataBytes.length, new InetSocketAddress(this.toIP, this.toPort));

    //     
    socket.send(packet);

    //      bye          
    if (data.equals("bye")){
     break;
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  //  
  socket.close();

 }
}
채 팅 수신 스 레 드

package chat;

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

/**
 *       :
 *    run      implements       Runnable   
 *        :Ctrl + O
 */
public class TalkReceive implements Runnable {

 DatagramSocket socket = null;

 private int port;
 private String msgFrom;

 //  
 public TalkReceive(int port, String msgFrom) {
  this.port = port;
  this.msgFrom = msgFrom;

  try {
   socket = new DatagramSocket(port);
  } catch (SocketException e) {
   e.printStackTrace();
  }
 }

 @Override
 public void run() {

  while (true){
   try {
    //       
    byte[] container = new byte[1024];
    DatagramPacket packet = new DatagramPacket(container, 0, container.length);

    //     
    socket.receive(packet); //       

    //    
    byte[] data = packet.getData();

    String receiveData = new String(data, 0, data.length);

    //      
    System.out.println(msgFrom + ":" + receiveData);

    //       bye           
    if (receiveData.equals("bye")){
     break;
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  //  
  socket.close();

 }
}
학생 단

package chat;

/**
 *    
 */
public class TalkStudent {

 public static void main(String[] args) {

  /**
   *    
   *   7777       
   *       9999   
   *   8888       
   *
   *       :
   * new TalkSend:  77777     ,    localhost,    9999   
   * @param fromPort
   * @param toIP
   * @param toPort
   *
   * new TalkReceive:  8888     ,     “  ”    
   * @param port
   * @param msgFrom
   *
   *        :      
   */
  new Thread(new TalkSend(7777, "localhost", 9999)).start();
  new Thread(new TalkReceive(8888, "  ")).start();
 }

}
선생님

package chat;

/**
 *    
 */
public class TalkTeacher {

 public static void main(String[] args) {

  /**
   *    
   *   5555       
   *       8888   
   *   9999       
   *
   *       :
   * new TalkSend:  5555     ,    localhost,    8888   
   * @param fromPort
   * @param toIP
   * @param toPort
   *
   * new TalkReceive:  9999     ,     “  ”    
   * @param port
   * @param msgFrom
   *
   *        :      
   */
  new Thread(new TalkSend(5555, "localhost", 8888)).start();
  new Thread(new TalkReceive(9999, "  ")).start();
 }

}
효과 일람


이상 은 자바 가 실현 하 는 다 중 스 레 드 온라인 상담(udp)의 상세 한 내용 입 니 다.자바 온라인 상담 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 시기 바 랍 니 다!

좋은 웹페이지 즐겨찾기