那位高手可以帮小弟改一下以下程序,只实现传送简单的数据包,谢谢!
import java.net.*;
import java.io.*;
import java.awt.*;
class UDPCommunicationServer extends Frame {
private Label label1, label2;
private Panel panel1, panel2;
private TextField textfield;
private String name, name1;
private TextArea textarea;
private DatagramSocket sendSocket, receiveSocket;
private DatagramPacket sendPacket, receivePacket;
public UDPCommunicationServer() {
super("通信控制台:");
panel1 = new Panel();
panel1.setLayout(new BorderLayout());
label1 = new Label("通话记录");
textarea = new TextArea(10, 20);
textarea.setText("欢迎你!");
panel1.add("North", label1);
panel1.add("Center", textarea);
add("North", panel1);
panel2 = new Panel();
panel2.setLayout(new BorderLayout());
label2 = new Label("发言:");
panel2.add("Center", label2);
textfield = new TextField(20);
panel2.add("South", textfield);
add("Center", panel2);
setVisible(true);
try {
sendSocket = new DatagramSocket();
receiveSocket = new DatagramSocket(5000);
} catch (SocketException e) {
e.printStackTrace();
System.exit(1);
}
}
public void waitForPacket() {
while (true) {
try {
byte[] buf = new byte[100];
receivePacket = new DatagramPacket(buf, buf.length);
receiveSocket.receive(receivePacket);
name = receivePacket.getAddress().toString();
if (name1 != name) {
textarea.append("\n来自主机:" + name + "\n端口:"
+ receivePacket.getPort());
}
textarea.append("\n客户:");
byte[] data = receivePacket.getData();
String receivedString = new String(data);
textarea.append(receivedString);
name1 = name;
} catch (IOException e) {
textarea.append("\n网络通信出现错误,问题在" + e.toString());
}
}
}
public void processEvent(AWTEvent e) {
if (e.getID() == Event.WINDOW_DESTROY) {
setVisible(false);
dispose();
System.exit(0);
}
super.processEvent(e);
}
public boolean action(Event e, Object o) {
try {
textarea.append("\n服务器:");
String string = o.toString();
textarea.append(string);
byte[] databyte = new byte[100];
databyte = string.getBytes();
sendPacket = new DatagramPacket(databyte, string.length(),
InetAddress.getByName(name), 5001);
sendSocket.send(sendPacket);
} catch (IOException ioe) {
textarea.append("网络通信出现错误,问题在" + ioe.toString());
}
return true;
}
}
public class UDPServer {
public static void main(String[] args) {
UDPCommunicationServer cs = new UDPCommunicationServer();
// cs.setVisible(true);
cs.waitForPacket();
}
}
import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;
public final class Client extends Applet{
private Label label1,label2;
private Panel panel1,panel2;
private TextField textfield;
private TextArea textarea;
private DatagramSocket sendSocket,receiveSocket;
private DatagramPacket sendPacket,receivePacket;
public void init(){
setBackground(Color.gray);
setLayout(new BorderLayout());
panel1=new Panel();
panel1.setLayout(new BorderLayout());
label1=new Label("通话记录");
textarea=new TextArea(10,20);
textarea.setText("欢迎你!");
panel1.add("North",label1);
panel1.add("Center",textarea);
add("North",panel1);
label2=new Label("发言:");
panel2=new Panel();
panel2.add("Center",label2);
textfield=new TextField(20);
textfield.setText("");
panel2.add("South",textfield);
add("Center",panel2);
setVisible(true);
}
public void start(){
waitForPackets();
}
public void waitForPackets(){
try{
sendSocket=new DatagramSocket();
receiveSocket=new DatagramSocket(5001);
}catch(SocketException e){
textarea.append("不能打开数据报Socket,或数据报Socket无法与指定端口连接!");
}
while(true){
try{
byte []buf=new byte[100];
receivePacket=new DatagramPacket(buf,buf.length);
receiveSocket.receive(receivePacket);
textarea.append("\n服务器:");
byte[]data=receivePacket.getData();
String receivedString=new String(data);
textarea.append(receivedString);
}catch (IOException e){
textarea.append("\n网络通信出现错误,问题在"+e.toString());
}
}
}
public boolean action(Event e,Object o){
try{
textarea.append("\n客户端:");
String string=o.toString();
textarea.append(string);
byte[]databyte=new byte[100];
databyte=string.getBytes();
sendPacket=new DatagramPacket(
databyte,string.length(),InetAddress.getByName("localhost"),5000);
sendSocket.send(sendPacket);
}catch(IOException ioe){
textarea.append("网络通信出现错误,问题在"+ioe.toString());
}
return true;
}
}
分享到:
相关推荐
以下将详细介绍相关的Java UDP通信和套接字通信知识点。 1. **Java UDP通信基础** - UDP是无连接的,即在发送数据前无需建立连接,因此它的速度较快,但不保证数据的顺序和可靠性。 - Java中的`java.net....
Java UDP通信是网络编程中的一个重要部分,它基于用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的传输层协议。UDP不提供数据包的顺序保证、错误检查或重传机制,而是以较小的开销换取较高的...
Java udp通信编程client端
Java udp通信编程server端程序
Java实现UDP通信,按照固定的帧格式发送数据和接收数据,对数据的格式解码处理。实现了显示同设备的不同工作模式的显示。发送不同的命令数据帧。 Java实现UDP通信,按照固定的帧格式发送数据和接收数据,对数据的...
SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信...
Java UDP通信是网络编程中的一个重要概念,主要涉及的是使用Java的Socket编程接口中的DatagramSocket类来实现用户数据报协议(UDP)的通信。UDP是一种无连接的、不可靠的传输协议,它不保证数据包的顺序到达或重传...
在Java中,我们通常使用`java.net.DatagramSocket`类来实现UDP通信。 1. **UDP Socket编程基础**: Java中的`DatagramSocket`类用于创建UDP套接字,它允许我们发送和接收数据报包。`DatagramPacket`类则封装了数据...
本教程将详细介绍如何在Android和Java中实现UDP通信。 首先,理解UDP的特点至关重要。UDP不提供连接建立、数据确认和流量控制等机制,因此它的开销较小,但同时也意味着数据可能会丢失、重复或乱序。在实现Android ...
在Java中,我们可以通过`java.net.DatagramSocket`类来实现UDP通信。多线程技术则能帮助我们在程序中同时处理多个任务,提高程序的并发性能。在这个"java udp 多线程实现简单的通信"的项目中,我们可能看到了如何...
Java UDP 通信客户端与服务器端实例分析 Java UDP 通信客户端与服务器端实例分析是介绍 Java 语言基于 UDP 协议的客户端与服务器端的实现技巧和相关操作注意事项。UDP 协议是一种无连接的网络协议,它不像 TCP 协议...
Java UDP通信是网络编程中的一个重要部分,它基于无连接的用户数据报协议(User Datagram Protocol),相较于TCP,UDP提供了一种轻量级、快速且不可靠的数据传输方式。本资料主要针对初学者,通过简单的代码示例来...
下面是一个简单的Java UDP通信示例: ```java // 服务器端 public class UDPServer { public static void main(String[] args) throws Exception { DatagramSocket serverSocket = new DatagramSocket(12345); ...
在这个Java UDP通信实例中,我们有两个关键文件:`ClientUDP.java` 和 `ServerUDP.java`,它们分别代表UDP通信的客户端和服务端。 ### 客户端 (`ClientUDP.java`) 客户端通常负责发起通信请求,发送数据到服务器。...
java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源 这是一个能正常通过Modbus TCP UDP协议读写项目 请放心下载,完全开源,在多个项目中已经使用
本项目是用Java语言编写的一个PC端UDP通信程序,设计用于与安卓设备进行数据交换,特别适用于实时性要求较高的应用,如在线游戏、视频流媒体等。 【描述】中的关键点在于程序是在Eclipse集成开发环境中运行的,这...
Java UDP通信是网络编程中的一个重要部分,UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于实时数据传输或者对数据完整性要求不高的场景。在Java中,我们通常使用`java.net`包中的`...
在Java中,我们使用`java.net.DatagramSocket`类来实现UDP通信。这个压缩包包含的是关于Java多线程UDP服务器程序(ServerThread)和客户端程序的代码示例以及相关的多线程Socket编程资料。 1. **UDP通信基础**: ...
Java中实现UDP通信主要依赖于`java.net.DatagramSocket`类。这个类提供了发送和接收UDP数据报文的功能。客户端创建`DatagramSocket`实例,然后可以通过`send()`方法发送`DatagramPacket`,通过`receive()`方法接收...
以上就是关于“Java实现UDP通信协议”的关键知识点。理解并掌握这些内容,可以帮助开发者实现高效的UDP通信应用,并能处理相关的数据转换、日志记录和异常情况。通过实际项目练习,可以加深对这些概念的理解,并提升...