`

简单聊天程序

    博客分类:
  • java
 
阅读更多
本程序实现任意两个已知IP的两电脑之间的聊天通讯。

Chat.java代码如下:
package com.chat.app;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Chat extends Frame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	List list = new List(6);
	//定义列表框,最多显示6行
	TextField tfIP = new TextField(15);
	TextField tfData = new TextField(20);
	DatagramSocket ds  = null;
	public Chat(){
		try {
			ds = new DatagramSocket(3000);
			//设置自己接收数据的端口号为3000
		} catch (SocketException e1) {
			e1.printStackTrace();
		}

		this.add(list,"Center");
		Panel p = new Panel();
		this.add(p,"South");
		p.setLayout(new BorderLayout());
		p.add(tfIP,"West");
		p.add(tfData,"East");

		/**
		 * 接收数据处理代码
		 */
		new Thread(new Runnable(){
			public void run(){
				byte[] buf = new byte[1024];
				DatagramPacket dp = new DatagramPacket(buf,buf.length);
				while(true){
					try {
						ds.receive(dp);
					} catch (IOException e) {
						if(!ds.isClosed()){
							//只有当程序没有被关闭时,发生异常才会抛出异常
							e.printStackTrace();
						}
					}
					list.add(new String(buf,0,dp.getLength())+" from "+dp.getAddress().getHostAddress()+":"+dp.getPort(),0);
				}
			}
		}).start();

		/**
		 * 网络消息发送处理代码
		 */
		tfData.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				//取出消息文本框中的数据和ip文本框中的IP地址
				byte[] buf = tfData.getText().getBytes();

				try {
					DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName(tfIP.getText()),3000);
					//这里设置接收消息的端口号为3000
					ds.send(dp);
					//如果将ds.send(dp);语句放到try语句块外面,则访问不到dp了,因为dp的有效范围为try语句块内
				} catch (UnknownHostException e1) {
					e1.printStackTrace();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
				tfData.setText("");
			}
		});
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				ds.close();
				dispose();
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {

		System.out.println("Starting chat...");
		Chat mainFrame = new Chat();
		mainFrame.setSize(300, 400);
		mainFrame.setTitle("Chat");
		mainFrame.setVisible(true);
		mainFrame.setResizable(false);
	}

}



运行结果如下:


  • 大小: 14.3 KB
分享到:
评论

相关推荐

    Java编写的简单聊天程序

    这是用Java编写的简单聊天程序 可供初学者下载学习

    mfc编写的简单聊天程序

    【标题】"MFC编写的简单聊天程序"指的是利用Microsoft Foundation Classes (MFC)库开发的一个基础级聊天应用程序。MFC是微软为Windows操作系统提供的一个C++类库,它简化了Windows API的使用,使开发者能够更高效地...

    Java简易聊天程序

    Java简易聊天程序是一种基于Java编程语言实现的交互式通信应用,它允许用户通过网络进行文本聊天。这个程序的核心概念和关键技术主要包括多线程、网络编程、输入/输出流以及简单的用户界面设计。以下是对这些关键...

    QT 简单聊天程序

    在这个“QT简单聊天程序”中,我们有两个主要部分:ChatServer和ChatClient,分别代表服务端和客户端。 **服务端(ChatServer)** 1. **QTcpServer**: 服务端的核心是`QTcpServer`类,它负责监听来自客户端的TCP...

    简易聊天程序(而且可以画图)

    【简易聊天程序(而且可以画图)】 这个项目是一个简易的聊天程序,它不仅支持基本的文字交流,还具有画图功能,使得用户可以在聊天过程中进行简单的图像创作和分享。这样的设计使得通信更具趣味性和互动性,类似于...

    UDP简单聊天程序示例

    在这个"UDP简单聊天程序示例"中,我们将探讨如何利用C#中的`UdpClient`类来实现一个简单的UDP聊天应用。 首先,我们要理解`UdpClient`类在.NET Framework中的作用。`UdpClient`是System.Net.Sockets命名空间下的一...

    Java开发的二个简易聊天程序

    这两个简易聊天程序是很好的学习材料,尤其对于初学者而言,它们提供了清晰的思路和规范的代码结构。 首先,我们要理解Java聊天程序的基本架构。通常,一个简单的聊天程序会包含客户端(Client)和服务器端(Server...

    简易聊天程序

    本案例提供的"简易聊天程序"是一个基础的实现,它涉及到Java语言的网络通信技术,包括TCP/IP协议、多线程以及输入/输出流的使用。下面我们将深入探讨这个话题。 首先,我们来看"Client"部分。在Java中,实现TCP...

    JAVA简单聊天程序

    我用JAVA的servlet写的这个小聊天程序,总共才几KB,但可以在不同的电脑上进行多人对话,删除记录等,我把数据库验证登陆写进去了,你若不想要这个登陆程序...这个程序结构清析,看了后你也可以自己动手写聊天程序了。

    MFCsockets简单聊天程序

    本项目"**MFC sockets简单聊天程序**"是基于MFC实现的一个网络通信应用,通过socket编程技术,让两个或多客户端(Client)与一个服务器端(Server)进行实时的文本聊天。 首先,我们需要理解**socket**的基本概念。...

    java写的简单聊天程序

    在这个“java写的简单聊天程序”中,我们主要关注的是如何使用Java来实现一个基本的多线程聊天应用。下面将详细探讨相关知识点。 首先,我们来看`Server.java`。在服务器端,一般会创建一个监听线程,用于接收...

    C++简易聊天程序C++简易聊天程序

    在这个场景下,我们关注的是一个使用C++编写的简易聊天程序。这个程序可能旨在帮助初学者理解网络编程的基础,以及如何实现基本的客户端-服务器通信。 C++简易聊天程序的设计通常会涉及到以下几个关键知识点: 1. ...

    Java开发的简易聊天程序

    本资源“Java开发的简易聊天程序”提供了一系列用Java实现的简单聊天程序示例,适合初学者和有一定经验的开发者进行学习和参考。 首先,让我们探讨Java语言的基础。Java是一种面向对象的语言,它具有“一次编写,...

    MFC编写 简单聊天程序

    在这个特定的场景中,我们讨论的是一个使用MFC编写的简单聊天程序,这对于初学者或者希望了解网络编程的人来说是一个很好的实践项目。 MFC的核心是它对Windows API的封装,它将Windows的消息机制、窗口类、控件等...

    简易聊天程序java

    基于C/S端的简易聊天程序,该聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。 对于整体系统的流程,也是...

    VC编写的socket简单聊天程序

    在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)进行简单的Socket编程,创建一个基础的聊天程序,这对于初学者来说是一个很好的学习起点。 首先,我们需要了解Socket的基本原理。Socket是操作系统...

    基于C#的简单聊天程序

    【标题】"基于C#的简单聊天程序"揭示了这个项目是使用C#编程语言创建的一个基础级聊天应用。在C#中,开发者通常利用.NET Framework或者.NET Core平台来构建这样的应用程序,因为这两个平台提供了丰富的类库和工具,...

    socket简易聊天程序

    socket简易聊天程序

    java简易聊天程序

    java简易聊天程序,使用TCP socket套接字安全协议,对象流二进制序列化传输。 简易局域网聊天程序,暂时只能发送文本消息。 此程序既是socket服务器又可以作为socket客户端。由于鄙人写的关闭服务和断开连接还存在...

Global site tag (gtag.js) - Google Analytics