利用java实现UDP

问题描述

网络课设作业,利用java来实现UDP,做了个小程序,第一次运行完全正确,等到第二次运行,就出现了问题,每次点“发送”按钮,都会停止在那里,没有错误提示,不知道是运算速度慢,结果还没出来,还是肿么一个情况,请大神给予解答哈……因每个帖子最多长度为10000个字符,所以分两个帖子发。呜呜呜……服务器端:UDPServerBean.javapackageUDPServer;importjava.io.*;importjava.net.*;publicclassUDPServerBean{privateDatagramSocketdSocket;privateintClientPort;privateintServerPort;privateInetAddressServerIP;privateInetAddressClientIP;privateStringcontent;//无参构造函数publicUDPServerBean()throwsSocketException,UnknownHostException{ClientPort=1111;ServerPort=1001;content="";ClientIP=InetAddress.getLocalHost();ServerIP=InetAddress.getLocalHost();dSocket=newDatagramSocket(ServerPort);}//信息发送函数,将接收到的信息发回给用户publicvoidsendToClient()throwsIOException{byte[]Buffer=("服务器已经收到:n"+content).getBytes();//将要发送的信息给Buffer变量DatagramPacketdPacket=newDatagramPacket(Buffer,Buffer.length,getClientIP(),getClientPort());//创建DatagramPacket对象dPacket,并设置客户机的IP地址与端口号dSocket.send(dPacket);//发送信息}//以下全是UDPServerBean类的各个成员变量的get和set方法publicInetAddressgetServerIP(){returnServerIP;}publicvoidsetServerIP(InetAddressserverIP)throwsException{ServerIP=serverIP;}publicDatagramSocketgetdSocket(){returndSocket;}publicvoidsetdSocket(DatagramSocketdSocket){this.dSocket=dSocket;}publicintgetClientPort(){returnClientPort;}publicvoidsetClientPort(intclientPort){ClientPort=clientPort;}publicintgetServerPort(){returnServerPort;}publicvoidsetServerPort(intserverPort)throwsSocketException{ServerPort=serverPort;}publicStringgetContent(){returncontent;}publicvoidsetContent(Stringcontent){this.content=content;}publicInetAddressgetClientIP(){returnClientIP;}publicvoidsetClientrIP(InetAddressclientIP){ClientIP=clientIP;}}

UDPServer.javapackageUDPServer;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.net.*;importjavax.swing.*;publicclassUDPServerextendsJApplet{privateUDPServerBeanserver;privateThreadthread;privateJTextFieldjtf_ServerPort=newJTextField(10);privateJButtonjbt_Strat=newJButton("启动");privateJButtonjbt_Exit=newJButton("退出");privateJTextAreajta_Server=newJTextArea();publicUDPServer(){JPaneljplServer11=newJPanel();jplServer11.add(newJLabel("服务器端口:"));jplServer11.add(jtf_ServerPort);JPaneljplServer21=newJPanel();jplServer21.add(jbt_Strat);jplServer21.add(jbt_Exit);JPaneljplServer0=newJPanel();jplServer0.setLayout(newGridLayout(2,1));jplServer0.add(jplServer11,BorderLayout.NORTH);jplServer0.add(jplServer21);add(jplServer0,BorderLayout.NORTH);add(newJScrollPane(jta_Server),BorderLayout.CENTER);//使用线程thread=newThread(newRunnable(){publicvoidrun(){receiveForemClient();//调用发送函数}});//启动按钮事件jbt_Strat.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){intserPort=Integer.parseInt(jtf_ServerPort.getText());//从jtf_ServerPort文本区中取服务器的端口号try{server=newUDPServerBean();//创建服务器UDPServerBean的类对象server.setServerPort(serPort);//将取得的服务器端口serPort给server对象jta_Server.setText("设置服务器端口为"+jtf_ServerPort.getText()+",服务器开启...n");//将服务器端设置好的信息显示在jta_Server文本域中thread.start();//启动线程}catch(SocketExceptione2){e2.printStackTrace();}catch(UnknownHostExceptione1){e1.printStackTrace();}catch(Exceptione1){e1.printStackTrace();}}});//退出按钮的触发事件jbt_Exit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});}//接收客户端的信息,并将接收到的信息发回给客户机publicvoidreceiveForemClient(){Stringrec_str=null;byte[]Buffer=newbyte[1024];try{server.setdSocket(newDatagramSocket(server.getServerPort(),server.getServerIP()));//server对象调用setdSocket()函数,创建新Socket对象(此时服务器端口号为设定的端口号)}catch(SocketExceptione){e.printStackTrace();}DatagramPacketdPacket=newDatagramPacket(Buffer,Buffer.length);//创建DatagramPacket对象dPacketwhile(true){//用循环监听信息接收try{server.getdSocket().receive(dPacket);//接受信息,将接收到的信息存放在dPacket对象中rec_str=newString(dPacket.getData(),0,dPacket.getLength());//取出dPacket对象中接收到的信息server.setClientPort(dPacket.getPort());//将dPacket对象中包含的客户机的端口号给server对象server.setClientrIP(dPacket.getAddress());//将dPacket对象中包含的客户机的IP给server对象server.setContent(rec_str);//将接收的信息给server对象jta_Server.setText(jta_Server.getText()+"收到IP地址为"+server.getClientIP()+",端口为"+server.getClientPort()+"的客户机的信息有:n"+rec_str+"n");//将客户机的信息与接收的信息显示在jta_Server文本域中server.sendToClient();//将信息发送回去}catch(IOExceptione){e.printStackTrace();}}}}

解决方案

解决方案二:
要有耐心,仔细检查
解决方案三:
是一层10000字谁告诉你一帖10000字。。你不会分两楼发啊。。
解决方案四:
引用2楼vnvlyp的回复:

是一层10000字谁告诉你一帖10000字。。你不会分两楼发啊。。

受教,受教,下次注意……
解决方案五:
昨天才写的TCPUDP的通信你可以看看新手勿喷

时间: 2024-11-05 18:58:36

利用java实现UDP的相关文章

利用java实现UDP(二)

问题描述 本帖子接<利用java实现UDP>这个帖子:客户端:UDPClientBean.javapackageUDPClient;importjava.io.*;importjava.net.*;classUDPClientBean{privateDatagramSocketdSocket;privateintServerPort;privateintClientPort;privateInetAddressServerIP;privateInetAddressClientIP;privat

利用Java 编写手机应用程序(续)

程序 █对MIDlet进行调试     编写PalmOS上的Spotlet时,我们可以利用System.out.println()函式帮我们印出一些讯息以帮助调试,那幺在手机上的MIDlet呢? 原则上,我们还是可以利用System.out.println()函式做一些输出.当模拟器执行时,就会在命令列上输出一些讯息.    另外,在PalmOS上,有KVMutil.prc可以帮助我们纪录程序所输出的讯息.那手机上呢? 因为没有实际的机器可以测试,因此这个问题到现在还不得而知,相信Motorol

利用Java 编写手机应用程序--Motorola iDEN篇(2) (转)

程序 █对MIDlet进行调试     编写PalmOS上的Spotlet时,我们可以利用System.out.println()函式帮我们印出一些讯息以帮助调试,那幺在手机上的MIDlet呢? 原则上,我们还是可以利用System.out.println()函式做一些输出.当模拟器执行时,就会在命令列上输出一些讯息.    另外,在PalmOS上,有KVMutil.prc可以帮助我们纪录程序所输出的讯息.那手机上呢? 因为没有实际的机器可以测试,因此这个问题到现在还不得而知,相信Motorol

udp-关于Android利用局域网进行UDP通信的问题

问题描述 关于Android利用局域网进行UDP通信的问题 我写了一个小程序准备利用UDP和电脑之间进行通信,然后基于这个做一点东西,可是问题是我用AVD测试很好用的,但是用真机测试就是不行.我的思路是让电脑和Android设备连接一台路由器,路由器为两台设备分配固定的ip地址进行通信.拜托大家帮我看看啊,我这才是第一步就郁闷的要死下面是代码.1:MainActivity package com.company.zebork.testudpll; import android.app.Activ

java struts2-怎样利用Java 中的struts2框架实现数据库中用户登录功能?

问题描述 怎样利用Java 中的struts2框架实现数据库中用户登录功能? 在Action中LoginAction怎样写? 配置文件中怎样写? 总体实现能够使数据库中已经存在的用户凭自己的密码与用户名登录成功呢?数据库是Oracle数据库.

利用Java实现串口全双工通讯 (转载)

利用Java实现串口全双工通讯 (投稿) Qingye Jiang (John)SMTH ID: qyjohnE-mail : qjiang@tsinghua.edu 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统.本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程. 本类库主要包括:SerialBean.java (与其他应用程序的

利用Java实现zip压缩/解压缩

压缩 利用Java实现zip压缩/解压缩(作者: 2000年07月06日 13:30) 由于网络带宽有限,所以数据文件的压缩有利于数据在Internet上的快速传输,同时也节 省服务器的外存空间. Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩.网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry.ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法. zip压缩文件结构:一个zip文件由多个entry组

Php利用java解析xml

xml 作者: 雨伞首先如果你对JAVA不感兴趣或者说你的主机不支持JAVA或者你也不打算学习的话请不要浪费时间在这里. 请先安装JAVA的执行环境与PHP结合,具体参考http://www.phpx.com/happy/thr78795.html 或者下载http://www.javax.org/download/php_java.rar里面我写有个readme.txt说明文档,这个压缩包是个简单的例子. 要下载我的JAVA源码请到http://www.javax.org/download/J

利用Java 编写手机应用程序(转)

程序 █前言     本文内容的所有操作皆在Windows 200操作系统上经过测试.如果您在不同的平台上验证本文内容,例如Windows 98或是Windows Me,则我们无法保证会有相同的结果. █简介     不知从什幺时候开始,我们突然感觉到周围的人各各拥有一只手机.利用手机与别人沟通成了我们生活的一部份.北欧某些先进国家的人民可以利用手机购买自动售货机所出售的商品;他们也可以在从事行动商务(m-commence) 交易时利用手机做为一种认证工具.在日本,行动电话的许多附加功能更是年轻