聊天程序设计

package 聊天程序设计;

import java.util.Scanner;

public class CharRoom {
public static void main(String[] args) {
	System.out.println("欢迎您进入聊天系统");
	Scanner in =new Scanner(System.in);
	System.out.println("请输入本程序发送的端口号");
	int sendPort=in.nextInt();
	System.out.println("请输入本程序接受的端口号");
	int receivePort=in.nextInt();
	System.out.println("聊天系统启动");
	new Thread(new SendTask(sendPort),"发送端任务").start(); //发送操作
	new Thread(new ReceiveTask(receivePort),"接受端任务").start();
}
}

package 聊天程序设计;

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

public class ReceiveTask implements Runnable {
 private int receiveProt;
	public ReceiveTask(int receiveProt) {
	this.receiveProt = receiveProt;
}
	@Override
	public void run() {
		// TODO Auto-generated method stu
		
		try {
			//1DatagramSocket对象
			DatagramSocket ds = new DatagramSocket(receiveProt);
			//2创建DatagramPacket对象
			byte[]buf=new byte[1024];
			DatagramPacket dp =new DatagramPacket(buf, buf.length);
			//3接受数据
			while(true) {
				ds.receive(dp);
				String str=new String(dp.getData(),0,dp.getLength());
				System.out.println("收到"+dp.getAddress().getHostAddress()+"--发送数据"+str);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
	}



}

package 聊天程序设计;

import java.io.IOException;
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 SendTask implements Runnable {
    private int sendPort;//发送数据端口号
	
    
    public SendTask(int sendPort) {
		this.sendPort = sendPort;
	}


	@Override
	public void run() {
		// TODO Auto-generated method stub
		//1创建DatagramSocket对象
		try {
			DatagramSocket ds =new DatagramSocket();
			//2输入要发送的数据
			Scanner in =new Scanner(System.in);
			while(true) {
				//3封装数据到DatagramPacke
				String data =in.nextLine(); //获取键盘输入的数据
				byte[]buf=data.getBytes();
				DatagramPacket dp=new DatagramPacket(buf,buf.length,
						InetAddress.getByName("127.0.0.255"),sendPort);
				//发送数据
				ds.send(dp);
				ds.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金石不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值