fastlove1 2009-12-02 12:27
浏览 263
已采纳

各位兄台,如何获得自己JavaMail程序的当前线程所占用的端口

小弟使用JavaMail编写了一个邮件客户端,当前有一个需求,就是使用多线程连接多个邮件服务器时需要获得每个线程在本地占用的端口号,个人感觉JavaMail API封装的太深,没有给出和Socket相关的接口,所以无法获得客户端的端口号。用Java 本身的API行吗?最好是代码,能够集成在我的程序中!谢了先!
[b]问题补充:[/b]
网上有一个叫tcpviewer的工具 可以看到ip 端口 和应用的对应 挺好用的
andilyliao (高级程序员)

兄台,类似的软件我也考虑过,但是它无法集成到我的程序中,即无法将每个线程和线程所占用的端口号对应起来
[b]问题补充:[/b]
TO:zhoun (中级程序员)
这种本地端口都是随机的,
JavaMail只关心服务器端的ip和port,
并不关心本地port.

除非你自己实现一个直接通过socket发送邮件的类代替JavaMail,
自己可以控制.

所以看你的需求是什么, 是否可以改用其他的方法实现.

这位兄台,我就是图省事儿不想用socket,采用较高层次的JavaMail,哎,谁知各有优劣,不可兼得啊

  • 写回答

6条回答

  • dpsnet 2009-12-03 12:31
    关注

    修改javamail中com.sun.mail.smtp.SMTPTransport的代码。
    在 protected boolean protocolConnect(String paramString1, int paramInt, String paramString2, String paramString3)throws MessagingException方法中找到代码段
    ......
    if (this.serverSocket != null)
    openServer();
    else {
    openServer(paramString1, paramInt);
    }

    在此段代码后加入你需要的代码,this.serverSocket.getLocalPort()就是开启的本地端口

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能