当前位置:  技术问答>java相关

那位大虾帮帮忙,帮我把下面这个小程序跑起来!

    来源: 互联网  发布时间:2015-02-06

    本文导语:  //程序如下,摘抄自thinking in java //对原程序的改动主要是将原来的socket改成SSLSocket,将原来的ServerSocket //改成SSLServerSocket,其它没变。 import java.io.*; import java.net.*; import javax.net.ssl.*; class ServeOneJabber extends Thread ...

//程序如下,摘抄自thinking in java
//对原程序的改动主要是将原来的socket改成SSLSocket,将原来的ServerSocket
//改成SSLServerSocket,其它没变。
import java.io.*;
import java.net.*;
import javax.net.ssl.*;

class ServeOneJabber extends Thread {
 private SSLSocket socket;
 private BufferedReader in;
 private PrintWriter out;

 public ServeOneJabber (Socket s) throws IOException{
   socket = s;
   in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   //Enable auto_flush;
   out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
    socket.getOutputStream())),true);
   //if any of the above calls throw an exception,the caller is
   //responsible for closing the socket.Otherwise the thread will close it;
   start();//calls run()
 }

 public void run(){
//   System.out.println("runing" + id);
   try{
     while(true){
       String str = in.readLine();
       if(str.equals("END")) break;
         System.out.println("Echoing:"+str);
       out.println(str);
       out.flush();
     }
     System.out.println("closing...");
   }catch (IOException e){
   }finally{
     try{
       socket.close();
     }catch(IOException e){}
   }
 }
}

public class MultiJabberServer{
 static final int PORT = 8083;
 public static void main(String [] args) throws IOException{
     
   SSLServerSocketFactory sslSrvFact = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
   SSLServerSocket s=(SSLServerSocket)sslSrvFact.createServerSocket(PORT);
   System.out.println("Server Started");
   try{
     while(true){
       //Blocks until a connection occurs:
       SSLSocket socket = (SSLSocket)s.accept();
       try{
         new ServeOneJabber(socket);
       }catch(IOException e){
         //if it fails,close the socket,otherwise the thread will close it.
         socket.close();
       }
     }
   }finally{
     s.close();
   }
 }
}

//编译通过,运行出现下列信息
Server Started
Exception in thread "main" javax.net.ssl.SSLException: No available certificate
corresponds to the SSL cipher suites which are enabled.
       at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.a([DashoPro-V1.2-120
198])
       at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept([DashoPro-V1.
2-120198])
       at MultiJabberServer.main(MultiJabberServer.java:57)

请问大虾,我该如何让它运行起来?谢谢! 
另:我只有32分可送,不过欢迎大家和我联系,我这里软件资源还是很丰富的。
我地Email:liday@263.net

|
ft,高手有的是,只是没看到而已,所谓术业有专攻吗,呵呵。

我搞过一个JSSE的FTP Server所以知道一些,你的问题很明白,就是那个安全加密证书没配对。

我用的是jdk1.4beta2,把你那个改成了两个文件。你试一下。
//ServeOneJabber.java
import java.io.*;
import java.net.*;
import java.security.KeyStore;
import javax.net.*;
import javax.net.ssl.*;
import javax.security.cert.X509Certificate;

class ServeOneJabber extends Thread {
private SSLSocket socket;
private BufferedReader in;
private PrintWriter out;

public ServeOneJabber (SSLSocket s) throws IOException{
  socket = s;
  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  //Enable auto_flush;
  out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
    socket.getOutputStream())),true);
  //if any of the above calls throw an exception,the caller is
  //responsible for closing the socket.Otherwise the thread will close it;
  start();//calls run()
}

public void run(){
//  System.out.println("runing" + id);
  try{
    while(true){
      String str = in.readLine();
      if(str.equals("END")) break;
        System.out.println("Echoing:"+str);
      out.println(str);
      out.flush();
    }
    System.out.println("closing...");
  }catch (IOException e){
  }finally{
    try{
      socket.close();
    }catch(IOException e){}
  }
}
}


//MultiJabberServer.java
import java.io.*;
import java.net.*;
import java.security.KeyStore;
import javax.net.*;
import javax.net.ssl.*;
import javax.security.cert.X509Certificate;

public class MultiJabberServer{
static final int PORT = 8083;
public static void main(String [] args) throws IOException{
    
  SSLServerSocketFactory sslSrvFact = (SSLServerSocketFactory)MultiJabberServer.getServerSocketFactory("TLS");
  SSLServerSocket s=(SSLServerSocket)sslSrvFact.createServerSocket(PORT);
  System.out.println("Server Started");
  try{
    while(true){
      //Blocks until a connection occurs:
      SSLSocket socket = (SSLSocket)s.accept();
      try{
        new ServeOneJabber(socket);
      }catch(IOException e){
        //if it fails,close the socket,otherwise the thread will close it.
        socket.close();
      }
    }
  }finally{
    s.close();
  }
}

    private static ServerSocketFactory getServerSocketFactory(String type) {
if (type.equals("TLS")) {
    SSLServerSocketFactory ssf = null;
    try {
// set up key manager to do server authentication
SSLContext ctx;
KeyManagerFactory kmf;
KeyStore ks;
char[] passphrase = "passphrase".toCharArray();

ctx = SSLContext.getInstance("TLS");
kmf = KeyManagerFactory.getInstance("SunX509");
ks = KeyStore.getInstance("JKS");

ks.load(new FileInputStream("testkeys"), passphrase);
kmf.init(ks, passphrase);
ctx.init(kmf.getKeyManagers(), null, null);

ssf = ctx.getServerSocketFactory();
return ssf;
    } catch (Exception e) {
e.printStackTrace();
    }
} else {
    return ServerSocketFactory.getDefault();
}
return null;
    }
}


你那个主要的问题,就是没给那个Certificate,你也不用造了,在Jdk1.4/docs/guidesecurityjssesamplessocketsserver下面把testkey放在你编译的路径下面,就可以了,我已经编译过了,完全没有问题。不行再讨论吧。

另外,你的代码有问题,

public ServeOneJabber (Socket s) throws IOException{

这句话的Socket应改为SSLSocket

呵呵,好了,下次不要再说没有高手了。

    
 
 

您可能感兴趣的文章:

  • QTextBrowser的拖影问题,各位大虾,帮帮忙
  • 救急!本人小菜,在安装linux下得vsftpd时遇到了问题,那位大虾帮帮忙啊
  • U盘的LINUX系统问题,大虾们帮帮忙。
  • 各位大虾segmentation fault的问题。我都晕了,帮帮忙吧,仅有的10送给你
  • 大虾们,帮帮忙!
  • 大虾们帮帮忙
  • 各位大虾帮帮忙!
  • 新手求救,大虾帮帮忙。。。。。。。。。
  • 各位大虾帮帮忙,急!!!——有关字节对齐问题
  • 请教熟悉JavaMail的大虾请帮帮忙,多谢了!
  • 一个简单的代码问题,请大虾进来帮帮忙!急!
  • 莫名其妙的问题,大虾帮帮忙
  • 关于wu-ftp如何运行?请大虾们帮帮忙!
  • ☆☆☆急急急急急啊!!!各位大虾帮帮忙啦!小弟的机子进不去了!
  • 请求linux yum的一个问题,请各位大虾帮帮忙
  • 各位大虾来帮帮忙啊!
  • 在安装qt-embedded发生的错误,大虾们请帮帮忙
  • 请问怎么修改数据库和表的UPDATE属性为YES 拜托各位大虾帮帮忙 我向您敬礼了
  • LIUNX的安装和使用的若干问题,望各位大虾帮帮忙?
  • 如何在gnome环境下使用gtk+绘制界面时,如何去掉窗口中的标题栏,大虾们帮帮忙吧.
  • 哪位大虾能帮帮我啊
  • 请各位大虾帮帮小弟,只一个小忙而已,谢谢!
  • 那位大虾有关于内核模块方面的资料啊,急需啊~~~~~~~帮帮我提供一点资料
  • 大虾帮帮我救命呀!!
  • 大虾们啊,帮帮我这个菜鸟吧!!!
  • 哪位大虾能帮帮我?
  • 急:我安装red hat linux,碰到小问题,各位大虾快帮帮我吧(在线等待。。。)
  • 明天要交了,可是~~~请大虾们帮帮小妹吧---数据的分级审核问题???
  • 十万火急:各位大虾帮帮小弟吧。如何把informix数据库中的中文字段写如到一个文件中?
  • 进程问题,有系统开发或分析经验的大虾请进来帮帮我!!!
  • 我用java做的applet站内搜索程序,不能搜索中文,那位大虾能帮帮我?代码如下:
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 请大虾们谈谈linux和unix的异同吧
  • 请大虾,详细介绍一下JavaBean的写法,和调用过程!
  • 对LDAP有研究的大虾请进,见者有分
  • 超级新手菜鸟请问各位大虾!
  • 各位大虾,一个初学者该怎样开始学习java?
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 哪位大虾知道weblogic与websphere的差别?
  • 大虾救命!APACHE没有理睬JSP?!!!
  • 请问各位大虾,如何把一个String赋值给一个Char[]??
  • 大虾救命啊!!!50分!!!
  • 哪位大虾指点一下哪里有weblogic下载啊???
  • 请问各位unix大虾,哪有免费的unix下载?
  • 初学者求救!!哪位大虾给点源代码?
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 请各位大虾介绍几个好一点的linux论坛,谢谢!
  • 大虾救命,dos下面怎么输入中文?
  • 请问大虾们,如何学习linux?
  • session里面可以放整型数吗?大虾请指教!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3