`
xiaoheliushuiya
  • 浏览: 402866 次
文章分类
社区版块
存档分类
最新评论

Socket网络编程(二)UDP协议实现聊天工具

 
阅读更多

实现功能如下:
在同一个窗口中实现聊天,可以选择发送的IP地址


这个程序实现分三个步骤:
1)实现图形用户界面
在eclipse中创建一个工程chat,创建一个chat类继承Frame类(实现聊天窗口)
2)编写网络消息发送功能
输入窗口中添加回车事件,然后把要发送的IP和信息发送出去
3)编写网络消息接收功能
使用线程,持续接收信息


实现代码+解释:
package UDP_chat;

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.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

 class Chat extends Frame {
    List lst = new List(6);
	TextField tfIP = new TextField(15);
	TextField tfData = new TextField(20);
	DatagramSocket ds = null;
	public List setLst(String item,int index){
		lst.add(item, index);
		return lst;
	}
	//构造函数里面实现窗口初始化、接收信息(线程)、发送信息
	public Chat(){
		try{
			ds = new DatagramSocket(3000);
		}catch(Exception e){
			e.printStackTrace();
		}
		this.add(lst,"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,1024);
				//循环接收信息
				while(true){
					try{
						ds.receive(dp);
						String haha = "消息:"+new String(dp.getData(),0,dp.getLength())
										+" from "+dp.getAddress().getHostAddress()
										+":"+dp.getPort();
						//将接收的信息打印到信息栏
						lst.add(haha,0);
					}catch(Exception e){
						//ds没有关闭才执行抛出异常
						if(!ds.isClosed()){
							e.printStackTrace();
						}
					}
				}
			}
		}).start();
		
		//发送消息:消息信息点回车,触发事件
		tfData.addActionListener(new ActionListener(){
			//需要实现此方法
			public void actionPerformed(ActionEvent e){
				byte [] buf;
				//获取消息信息
				buf = tfData.getText().getBytes();
				
				try{
					//组装消息内容
					DatagramPacket dp= new DatagramPacket(buf,buf.length,
							InetAddress.getByName(tfIP.getText()),3000);
					//发送消息
					ds.send(dp);
				}catch(Exception ex){
					ex.printStackTrace();
				}
				tfData.setText("");
			}
		});
		//关闭窗口的触发事件,关闭ds
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				ds.close();
				dispose();
				System.exit(0);
			}
		});
	}
	
	public static void main(String[] args){
		//初始化窗口
		Chat chat = new Chat();
		chat.setSize(300,400);
		chat.setTitle("即时通讯");
		chat.setVisible(true);
		chat.setResizable(false);
	}
}



分享到:
评论

相关推荐

    Socket编程-即时通讯工具-基于TCP和UDP协议-包括服务器端和客户端

    基于TCP和UDP协议实现的一个即时通讯工具,具体功能包括: 工具包括服务器端和客户端; 具备用户注册、登录、找回密码功能(基于TCP协议); 两个用户如果同时在线,采用点到点通信方式进行聊天,信息不需要通过...

    精选_基于TCP和UDP Socket编程实现的网路聊天室支持文件传输_源码打包

    基于TCP和UDP Socket编程实现的网路聊天室支持文件传输

    lan_chat.rar_TCPIP_TCPIP matlab_TCP\IP编程_udp 聊天_局域网聊天工具

    局域网聊天工具(本程序设计分为服务器应用程序及客户机应用程序部分,采用Socket套接字库网络编程。(UDP)和(TCPIP)相结合的连接方式,及解决了数据传输的时效性又能保证数据在传输的过程中不会丢失。另外程序...

    C#.NET网络编程.part1

    基于tcp/udp协议的socket编程 4.1 hternet和socket简介 4.1.1 tcp协议简介 4.1.2 udp协议简介 4.1.3 端口简介 4.1.4 system.net名称空间 4.1.5 system.net.sockets名称空间 4.2 基于tcp协议的...

    Visual C#网络编程技术与实践源代码

    全书共分13章,主要内容包括网络编程原理、Visual C# 2005的套接字以及多线程的开发、基于各种不同协议的网络编程应用模块,并通过几个典型的实例介绍了Visual C# 2005网络编程的实际应用。 本书注重代码的通用性和...

    网络编程!!!!!!!!!!!!!!!!!!!!

    TCP/IP、UDP技术、socket网络编程、还有类似qq聊天工具的软件源码!!!

    计算机网络课程设计-TCP聊天系统课程设计和报告(C#)winfrom实现,客户端和服务端

    2.掌握用Socket编程实现聊天工具。 3. visual studio2005提供了支持网络环境的类库system.net,可适应多种网络协议,包括TCP/IP、UDP等。使用system.net类库,可快速地开发各种网络应用程序,而Socket通信是基于TCP...

    简单的基于多线程的聊天工具

    用MFC开发的基于SOCKET的简单的多线程聊天工具,是基于UDP的网络聊天系统,对于初学网络编程的人来说是个不错的例子

    网络程序设计,客户端代码,服务器代码,实验报告。

    网络程序设计实验一 熟悉开发工具 1 ...实验五 基于MFC Socket类的网络编程 29 实验六 聊天室程序的设计及实现 35 实验七 PING程序的设计及实现 38 实验八 电子邮件程序的设计与实现 44 实验九 FTP客户端实现 47

    Socket编程指南及示例程序

    包括六个UDP和TCP发送接受的cpp文件,一个基于MFC的局域网聊天小工具工程,和此小工具的所有运行时库、资源和执行程序。

    局域网聊天工具MyQQ

    本程序设计分为服务器应用程序及客户机应用程序部分,采用Socket套接字库网络编程。(UDP)和(TCP/IP)相结合的连接方式,及解决了数据传输的时效性又能保证数据在传输的过程中不会丢失。另外程序采用多个线程来...

    VC6.0C开发的局域网聊天工具

    在VC6.0下基于UDP开发局域网聊天工具,实例,关键节点注释,希望对刚接触网络和消息编程朋友有用

    Linux高性能服务器编程

    内容简介《Linux高性能服务器编程》是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、...

    java 局域网聊天 ,文件传输 工具

    解决了基于TCP,和UDP实现的文件传输 和局域网聊天,附源代码以及生成的jar文件。版权所有,请勿转载。。。

    TCP/IP的多人聊天室程序源码

    2.掌握用Socket编程实现聊天工具。 3. visual studio2010提供了支持网络环境的类库system.net,可适应多种网络协议,包括TCP/IP、UDP等。使用system.net类库,可快速地开发各种网络应用程序,而Socket通信是基于...

    基于java的局域网聊天系统-毕业设计.doc

    图2 面向连接的SOCKET编程模型 图3 面向非连接的SOCKET编程模型 Windows Sockets规范中定义了一个新的数据类型 SOCKET,这一类型的定义对于将来Windows Sockets规范的升级是必要的。这一类型的定义保证了应用程序向...

    郭克华 J2ME视频配套课件 及源码 ppt

    入门 01体系介绍和环境配置 其他 25J2ME代码优化 ...18网络编程1:Socket编程 19案例4:聊天室开发 20网络编程2:UDP编程 21网络编程3:HTTP编程 RMS开发 15RMS编程1:基础知识 16RMS编程2:高级知识 17案例3

    局域网聊天工具_outerntu_Vc_

    VC++局域网聊天程序,利用Socket套接字将主程序分为服务端和客户端两个部分。采用了UDP和TCP/IP相结合,有效提高了数据传输的时效性和稳定性。本程序还用到了多线程编程,用来解决程序自身阻塞的问题。

    vc++ 应用源码包_3

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    vc++ 开发实例源码包

    该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...

Global site tag (gtag.js) - Google Analytics