UDP聊天程序

来源:互联网 发布:尚学堂白鹤翔js第二季 编辑:程序博客网 时间:2024/06/08 13:23
通过键盘录入获取要发送的信息。

将发送和接收分别封装到两个线程中


package cn.hncu.udp.chat2;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Scanner;public class UDPChat {public static void main(String[] args) {        try {DatagramSocket send=new DatagramSocket(10003);DatagramSocket receive=new DatagramSocket(10004);new Thread(new Send(send)).start();new Thread(new Receive(receive)).start();} catch (Exception e) {e.printStackTrace();}}}class Send implements Runnable{    private DatagramSocket send;public Send(DatagramSocket send) {this.send=send;}@Overridepublic void run() {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String line=null;try {while((line=br.readLine())!=null){byte[] buf=line.getBytes();DatagramPacket dp=new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10002);send.send(dp);if("over".equals(line)){break;}}send.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}class Receive implements Runnable{    private DatagramSocket ds;public Receive(DatagramSocket receive) {    this.ds=receive;}@Overridepublic void run() {while(true){byte[] buf=new byte[1024];try {DatagramPacket dp=new DatagramPacket(buf, buf.length);ds.receive(dp);String ip=dp.getAddress().getHostAddress();String data=new String(dp.getData(),0,dp.getLength());System.out.println(ip+"-----说"+data);if("over".equals(data)){System.out.println(ip+"离开聊天室");break; }} catch (IOException e) {e.printStackTrace();}}}}

0 0
原创粉丝点击