UDP网络程序设计Java_第1页
UDP网络程序设计Java_第2页
UDP网络程序设计Java_第3页
UDP网络程序设计Java_第4页
UDP网络程序设计Java_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论