UDP的点对点聊天程序(swing界面)

本文介绍了如何使用UDP实现点对点聊天程序,并结合Swing界面进行展示。主要内容包括客户端和服务器端的主要代码,内容发送的处理,以及在开发过程中遇到的问题,如"Connection reset"和界面加载不出来。对于"Connection reset"问题,作者分析了可能的原因并给出了解决方案。针对界面加载问题,通过创建线程解决了Swing界面无法正常显示的困境,还列举了三种创建线程的方法及其优缺点。
摘要由CSDN通过智能技术生成

点对点聊天的程序(swing界面)

主要代码

客户端

new Thread() {
   
	public void run() {
   
		try {
   
			//创建客户端的套接字
			Socket socket=new Socket("localhost",Integer.parseInt(textField_2. getText()));
			
			//获取socket通道的输入流(输出流实现读取数据一行一行的读写
			//InputStream in=socket.getInputStream();
			BufferedReader br= new BufferedReader(new InputStreamReader(socket. getInputStream()));
			String line=null;
			
			//用户点击发送按钮的时候写出
			//获取socket通道的输出流,写一行换一行
			bw= new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			if((line=br.readLine())!=null) {
   
				//将读入的数据拼接到文本域中显示
				//System.lineSeparator()换行
				textArea.append(line+System.lineSeparator());
			}
			//关闭socket 通道
			socket.close();
		} catch (IOException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}.start();

服务器端

new Thread() {
   
	public void run() {
   
		try {
   
			//创建客户端的套接字
			Socket socket=new Socket("localhost",Integer.parseInt(textField_2.getText()));
			
			//获取socket通道的输入流(输出流实现读取数据一行一行的读写
			//InputStream in=socket.getInputStream();
			BufferedReader br= new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String line=null;
			
			//用户点击发送按钮的时候写出
			//获取socket通道的输出流,写一行换一行
			bw= new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			if((line=br.readLine())!=null) {
   
				//将读入的数据拼接到文本域中显示
				//System.lineSeparator()换行
				textArea.append(line+System.lineSeparator());
			}
			
			//关闭socket 通道
			socket.close();
			
		} catch (IOException e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}.start();

内容发送

try {
   
	if(textField_1.getText().equals("")||textField_2.getText().equals("")) {
   
		JOptionPane.showMessageDialog(test.this, "请输入接受者地址和端口号");
	}
	else if(textField.getText().equals("")) {
   
		JOptionPane.showMessageDialog(test.this, "发送内容不能为空");
	}else {
   
		textArea.append(textField_3.getText()+"(我)说:"+textField.getText()+"\n");
		bw
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值