




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络实验报告 (UDP客户/服务器程序设计) 班级:B10082021学号:201008202102 姓名:王美霞一、实验目的实现在UDP方式下客户端向服务器端的数据传送过程。二、实验性质综合与设计性实验。三、实验条件装有以太网卡,配置网络协议的并能实现联网的两台微机。四、实验要求编程实现一个聊天室系统。该系统包括客户端和服务器端两部分。用户通过客户端发送消息。服务器端在收到消息后,显示在主界面上。要求还能实现广播功能。对主要的函数及其参数给予说明,要有实现过程的主要程序段,并对各段程序的功能及作用进行说明。五、实验思想UDP是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简
2、单不可靠信息传送服务。在此利用Java构建服务器端和客户端建立通信。主机1:第一步:发送端口号为1234,接收端口号为1235,输入IP;第二步:发送信息第三步:关闭连接主机2:第一步:发送端口号为1235,接收端口号为1234,输入IP;第二步:发送信息第三步:关闭连接udpFrame(String s)方法用于界面设计。actionPerformed(ActionEvent e)用于监听confirm按钮和send按钮点击后要执行的的操作,第一个if语句连接要发送的主机,并获取其端口号,第二个if语句用于发送数据流和在showChat窗口显示发送内容。run()方法用于接收数据报和在sho
3、wChat窗口显示内容,其中用while循环和try-catch实现和异常抛出六、主要代码及其说明import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;SuppressWarnings("serial")public class udpFrame extends JFrame implements Runnable,ActionListener/* * */JButton send,confirm;/发送和确
4、定按钮JTextField serverIp,/IP地址 serverPort,/目标端口 msgText,/发送信息窗口 clientPort;/接收端口JTextArea showChat;/显示聊天记录窗口Thread thread = null;JScrollPane JSPane; DatagramPacket sendPack,receivePack;/打包发送数据和收到的打包数据 DatagramSocket sendSocket,receiveSocket;/发送数据和收到数据 private InetAddress sendIP; private int sendPort,r
5、eceivePort; private byte inArray, outArray; public static final int maxSize=1024;String musicName;/收到消息时会有声音File musicFile;URI uri;URL url;AudioClip clip = null;public udpFrame(String s)setTitle(s);musicName="msg.wav" /初始化声音文件send = new JButton("发送");confirm= new JButton("确定
6、");Box boxV1=Box.createHorizontalBox();boxV1.add(new Label("目标IP:");serverIp=new JTextField();serverIp.setColumns(8);boxV1.add(Box.createHorizontalStrut(5); boxV1.add(serverIp); boxV1.add(new Label("目标端口:");serverPort=new JTextField();serverPort.setColumns(3);boxV1.add(serve
7、rPort);boxV1.add(Box.createHorizontalStrut(4);boxV1.add(new Label("接收端口:");clientPort=new JTextField();clientPort.setColumns(3);boxV1.add(clientPort);boxV1.add(Box.createHorizontalStrut(5);boxV1.add(confirm);Box boxV2=Box.createHorizontalBox();msgText=new JTextField();msgText.setColumns(10
8、);boxV2.add(msgText);boxV2.add(Box.createHorizontalStrut(5);boxV2.add(send);Box basebox=Box.createVerticalBox();basebox.add(boxV1);showChat=new JTextArea(20,42);showChat.setEditable(false);JSPane = new JScrollPane(showChat);basebox.add(JSPane);basebox.add(Box.createVerticalStrut(10);basebox.add(boxV
9、2);Container con=getContentPane();con.setLayout(new FlowLayout();con.add(basebox);confirm.addActionListener(this);send.addActionListener(this);thread = new Thread(this);setBounds(60,60,500,480);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);msgText.setEditable(false);send.setEnabled
10、(false); public void actionPerformed(ActionEvent e) try if(e.getSource()=confirm) if(serverPort.getText().length()>0&&serverIp.getText().length()>0) inArray=new bytemaxSize; outArray = new bytemaxSize; sendPort=Integer.parseInt(serverPort.getText(); sendIP=InetAddress.getByName(serverI
11、p.getText(); sendSocket=new DatagramSocket(); receivePort=Integer.parseInt(clientPort.getText(); receivePack=new DatagramPacket(inArray,maxSize); receiveSocket=new DatagramSocket(receivePort); showChat.append("开始聊天n"); thread=new Thread(this); thread.setPriority(Thread.MIN_PRIORITY); threa
12、d.start(); confirm.setEnabled(false); send.setEnabled(true); msgText.setEditable(true); else JOptionPane.showMessageDialog(this,"地址或断口不能为空!","警告提示!",JOptionPane.WARNING_MESSAGE); if(e.getSource()=send) outArray=msgText.getText().getBytes();if(msgText.getText().length()>0) send
13、Pack=new DatagramPacket(outArray,outArray.length,sendIP,sendPort); sendSocket.send(sendPack); showChat.append("我说:"+msgText.getText()+"n"); msgText.setText(null); else JOptionPane.showMessageDialog(this,"消息不能为空!","警告提示!",JOptionPane.WARNING_MESSAGE); catch(Unk
14、nownHostException el) showChat.append("连接服务器失败!n"); catch(IOException el) showChat.append("数据发送失败!n"); public void run() while (true) try receiveSocket.receive(receivePack); String message=new String(receivePack.getData(),0,receivePack.getLength(); showChat.append("对方说:"
15、;+message+"n"); Player(); catch(IOException el) showChat.append("接收数据出错n"); public void Player() if(clip!=null)clip.stop(); musicFile =new File(musicName); uri=musicFile.toURI(); tryurl=uri.toURL(); catch(Exception exp) clip =Applet.newAudioClip(url); clip.play(); public static void main(String args)SuppressWarnings("unused")ud
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 669-2012固体废弃物水上集装化运输通用要求
- DB31/T 1305-2021未成年人家庭监护能力评估指南
- DB31/T 1223-2020一次性食品安全封签管理技术规范
- DB31/T 1153-2019医疗机构卓越绩效评价准则
- 2024年特种加工机床资金筹措计划书代可行性研究报告
- 2024年生物医用陶瓷材料项目资金申请报告代可行性研究报告
- 2025年Web考试复习技巧试题及答案
- 2024年牛排项目资金需求报告代可行性研究报告
- 建筑机器人抹灰施工环保责任合同
- 新能源汽车充电桩场地租赁与智能充电管理系统安装协议
- 吉林省长春市2024年中考语文真题试卷【附真题答案】
- DZ/T 0462.3-2023 矿产资源“三率”指标要求 第3部分:铁、锰、铬、钒、钛(正式版)
- 梧州喜得宝矿业有限公司广西梧州市金山顶金银矿矿山地质环境保护与土地复垦方案
- 2024年职业卫生技术人员评价方向考试题库附答案
- 安全管理之肉制品安全及防控措施
- 绿色算力基础设施的能源与算力协同优化
- 中小学学生规范汉字书写比赛硬笔格式
- 商品房买卖合同(示范文本)GF-2000-0171
- 手机制造行业未来五至十年行业分析
- 2024版社工(初级)《社会工作实务(初级)》考试题库(含答案)
- 腰痛中医诊疗规范诊疗指南2023版
评论
0/150
提交评论