实验目的
掌握网络通信协议及相关程序设计。
实验要求
1. 给与数据报通信相关的代码加上详细注释,并对数据报通信流程进行介绍(20')。
2. 利用套接字通信方式编写一个程序,该程序生成两个客户端,一个服务器端,两个客户端可以通过服务器相互进行简短的文字交流。在报告中附上程序截图、完整的运行结果和简要文字说明,文字说明需要包含对套接字通信流程的介绍。(60分: 套接字连接5分(如用数据报通信扣5分),两个客户端10分,一个服务器端5分,实现文字交流10分,程序注释和截图10分,运行结果截图10分,文字说明10分)
实验步骤
1.数据报通信,简称UDP通信,UDP代表的是用户数据报协议,它是一种无连接,不可靠的网络传输协议。
它可以直接在两个主机上直接传送数据,而不需要通过中间服务器。
它具有低延迟、开销小、支持广播和多播以及简单等优点,但也存在着不可靠性、无序性、数据包大小限制以及不支持阻塞机制等缺点。
在UDP通信中,发送方将数据封装成数据包(Datagram),并指定接收方的IP地址和端口号作为目标地址。然后,发送方将数据报直接(mail)发送到网络中,而不需要经过中间服务器的转发。接收方通过监听指定端口,接收发送方发送的数据包。
UDP协议分为接收和发送两边部分,具体操作分别为:
用户A:
package net;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class A extends JFrame implements Runnable, ActionListener
{
JTextField outMessage = new JTextField(12);
JTextArea inMessage = new JTextArea(12,20);
JButton b = new JButton("发送数据");
A()
{
super("I AM A");
b.addActionListener(this);
setSize(320,200); setVisible(true);
JPanel p = new JPanel();
p.add(outMessage);
p.add(b);
Container con = getContentPane();
con.add(new JScrollPane(inMessage), BorderLayout.CENTER);
con.add(p, BorderLayout.NORTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
validate();
Thread thread = new Thread(this);
thread.start(); //创立线程,负责接收数据
}
//UDP传输——发送数据代码部分
public void actionPerformed(ActionEvent event)
{
// 单击按钮发送数据
//定义字符数