那位高手可以帮小弟改一下以下两个程序,只实现传送简单的数据包,谢谢!
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;
}
}
相关推荐
标题"求高手帮忙解决下问题,谢谢"表明了用户可能遇到了宏无法正常运行的困境,他们正在寻求专业帮助来解决这个问题。这可能涉及到宏错误、兼容性问题、安全设置或者VBA代码的语法错误等。 描述中的"宏计算,无法...
### 寻求IE假死具体解决办法 在探讨如何解决Internet Explorer(以下简称IE)出现的“假死”问题之前,我们首先需要明确几个概念:何为IE假死?为何会出现这种情况?以及面对这类问题时我们可以采取哪些具体的解决...
在Linux操作系统中,寻求帮助是每个用户和管理员都需要掌握的基本技能。Linux系统以其开源、自由和强大的命令行工具而著名,但这...记住,解决问题的过程本身就是学习的一部分,不断实践和探索是成为Linux高手的关键。
综上所述,成为一个伟大的软件开发高手需要深厚的技术功底、清晰的问题理解和分析能力、高效的时间管理技巧、出色的编码质量、对代码和解决方案的自信、强烈的客户需求意识、持续的学习动力和架构设计思维。...
单片机高手的秘诀之一是不急于求成,不要一遇到问题就寻求代码答案。应该先自行思考,找出问题的关键所在,然后再查看别人的提示,从而了解思路之间的差异。这种独立思考的过程有助于深化理解,并且在解决问题后能够...
### 后疫情时代全球气候治理:共同寻求务实的解决方案 #### 概述 随着全球范围内新冠疫情的持续影响,人们越来越意识到环境与健康之间的紧密联系。本文档探讨了在全球范围内寻求有效的气候治理方案的重要性,特别...
在升级BIOS前,用户应仔细阅读官方发布的更新日志,了解新BIOS版本解决了哪些问题,以及是否包含针对特定显存颗粒的改进。对于盈通游戏高手488这款显卡,由于其8GB的显存容量,更新BIOS可能会对处理大量数据的游戏或...
2. **善于思考与解决问题**:面对技术问题,不要急于寻求现成的答案,而应尝试自己解决。分析问题、理解问题的根源,通过独立思考找出解决方案。这样不仅能加深对技术的理解,也能培养解决问题的能力。 3. **虚心...
《Visual C++编程高手》是一本专注于探讨使用Microsoft的Visual C++进行高效程序开发的专著。这本书旨在帮助读者从初学者逐步成长为精通...无论你是初涉编程的新手,还是寻求技术进阶的资深开发者,都能从中获益匪浅。
总的来说,"PS高手进阶系列"是一套全面的教程,无论你是想要提升专业技能,还是寻求创新灵感,都能从中获益。通过深入学习和实践300个实例,你将成为一名真正的Photoshop高手,能够自如应对各种图像处理挑战。
2. **调试技巧**:调试是程序员的基本功,遇到错误时,不要急于寻求他人帮助,而是要学会利用调试工具缩小错误范围,理解错误信息,这对提升解决问题的能力至关重要。 3. **基础知识的重要性**:基础知识是编程大厦...
类的话就让他派生自CObject吧,然后接下来会遇到两个问题,我在这里整理一下我在网上寻求的解决方法,文中所写是否是问题的标准解决办法,有待高手指教,我只是发此文章帮助和我一样遇到问题的人,和记录一下自己的...
如果在下载过程中遇到任何问题,可以在相应的平台上留言寻求帮助。下载完成后,请记得对分享者进行评分,这有助于激励更多人分享优质资源。 ### 四、总结 《Java高手真经》之应用框架卷不仅深入浅出地讲解了Java ...
寻求帮助寻求帮助寻求帮助寻求帮助
在寻求答案的过程中,即使最终未能完全解答,也能积累大量知识,促进个人成长。这种对知识的渴望是推动个人技能提升的关键动力。 ### 6. 多与别人交流 人际交往对于JAVA程序员而言意义重大。通过与他人交流,不仅...
总的来说,《Delphi高手突破》是一本全面覆盖Delphi编程技术的书籍,无论你是刚接触Delphi的新手,还是寻求进阶的开发者,都能从中受益匪浅。通过学习,你将掌握Delphi的核心技术,有能力开发出高效、专业的Windows...