可以把udp通讯的服务器端程序写到servlet中吗? 一方面我要随时监听客户端的请求。。另一方面在一定的条件下,客户又可能通过url调用servlet来查询数据库。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 原因很简单。就是为了少给客户一个程序,即只给一个servlet。我试过了,必需要通过url调用一次servlet,程序才能进行监听。。代理如下:import javax.servlet.*; import javax.servlet.http.*;import java.net.*; public class msgserver extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { //服务器监听程序代码开始,目的是为了保存客户端发来的用户名及IP //接收Client数据,用户及IP等信息//////////////////////////////////////// byte buffer[] = new byte[256]; DatagramSocket socket1 = null ; try { //DatagramSocket socket1 = new DatagramSocket(2222); socket1 = new DatagramSocket(2222); DatagramPacket packet1 = new DatagramPacket(buffer,buffer.length); } //服务器监听程序代码到此结束/////////////////////////////////////////////////// //以下是通过url调用servlet,要处理的功能 //发送数据到Client,指定端口号///////////////////////////////////////////// DatagramSocket cli=null; String to=null; String reqString = req.getQueryString(); //读入java代理输入参数 if(reqString == null) { to = "提示:"; } else { to=getRightString(reqString,"to=") ; //取得接收邮件的人名 } try { //DatagramSocket cli=new DatagramSocket(2222); cli=new DatagramSocket(2222); byte sb[]=new byte[512]; String sen="show/to="+to; //向client发送show,并向目标to提示消息 sb=sen.getBytes(); //System.out.println(sen); DatagramPacket pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("192.168.1.100"),1111); cli.send(pac); } catch(SocketException se) { se.printStackTrace(); } catch(IOException ie) { ie.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { if (cli != null) { cli.close() ; cli.disconnect() ; } } }} 2012年6月编程语言排行榜,Java持续下挫 socket JAVA客服端与C服务通信问题 100分求解 急!POI中读取自定义格式(日期)数据的问题 JAVA中如何清频 小弟新学JAVA遇一问题,也许这就是JAVA 请问,一个方法的参数的类型是接口类型,该怎么形成这个参数? 送分菜鸟问题,在线等待 email.indexof(".",str_pos)==-1何解阿 如何把bytes[]转换为String() 菜鸟求助,谢谢了!!! GUI时的中文输入问题 为什么有了import java.applet.*却还要import java.applet.Applet
我试过了,必需要通过url调用一次servlet,程序才能进行监听。。代理如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*; public class msgserver extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
//服务器监听程序代码开始,目的是为了保存客户端发来的用户名及IP
//接收Client数据,用户及IP等信息////////////////////////////////////////
byte buffer[] = new byte[256];
DatagramSocket socket1 = null ;
try {
//DatagramSocket socket1 = new DatagramSocket(2222);
socket1 = new DatagramSocket(2222);
DatagramPacket packet1 = new DatagramPacket(buffer,buffer.length); }
//服务器监听程序代码到此结束///////////////////////////////////////////////////
//以下是通过url调用servlet,要处理的功能
//发送数据到Client,指定端口号/////////////////////////////////////////////
DatagramSocket cli=null;
String to=null;
String reqString = req.getQueryString(); //读入java代理输入参数
if(reqString == null) {
to = "提示:";
}
else {
to=getRightString(reqString,"to=") ; //取得接收邮件的人名
}
try
{
//DatagramSocket cli=new DatagramSocket(2222);
cli=new DatagramSocket(2222);
byte sb[]=new byte[512];
String sen="show/to="+to; //向client发送show,并向目标to提示消息
sb=sen.getBytes();
//System.out.println(sen);
DatagramPacket pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("192.168.1.100"),1111);
cli.send(pac);
}
catch(SocketException se)
{
se.printStackTrace();
}
catch(IOException ie)
{
ie.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
if (cli != null) {
cli.close() ;
cli.disconnect() ;
}
}
}}