有关端口占用的问题

allan1031 2003-09-16 01:30:48
我在做一个多线程的服务器端程序,该程序会占用一定的端口

那么,我遇到的问题是,我的客户端在和服务器端做连接时,服务器端的程序是独占的,比如我有客户端程序B和C,其中B,C分别占有不同的线程,可是我的服务器端的程序却只能一次为一个客户端程序服务,也就是说除非B已经5停止了对服务器端的连接,否则,C端永远只能处在一个等待阶段(提示已经连接,但是在等候操作)

这个问题应该是出在端口共享上吧,有什么方法可以解决呢?

我的服务器端的主处理函数类似如下:

public class miancirculate {
private static int FtpPort=77723;


public static void main (String args[]){
try{
ServerSocket socket =new ServerSocket(FtpPort);
for(;;){
Socket InComing=socket.accept() ;
Thread nowthread= new Thread(new ftplistenclass(InComing));
nowthread.start();
}
}catch(Exception e){
System.exit(0);}

}



}

在线等待,如果有妥善的处理方法---不一定要代码的---一定给分,如果100不够我可以另行开帖加,真的很想知道这个问题的答案---谢谢大家了。
...全文
49 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
allan1031 2003-09-16
  • 打赏
  • 举报
回复
解决了以上的问题了~~~汗

还真是让人郁闷

原来我在写线程类的时候是用“extends Thread” 的,而这个办法产生的线程对端口传递的数据是堆栈式的操作,并不能完全的实现“多线程”的概念

现在我改成“implements Runnable”,问题迎刃而解~~~~我靠,居然这么抠门~~~

谢谢大家了,一会就给分~~~

jh20001 2003-09-16
  • 打赏
  • 举报
回复
噢,对了,我想问问你的服务器端与客户端是不是短连接?
jh20001 2003-09-16
  • 打赏
  • 举报
回复
我觉得你可以有两中解决方法:
一:为A客户端和B客户端各开一个端口
二:你的nowthread线程只负责监听SOCKET通讯问题,同时再开两个不同的线程分别处理来自A客户 端和B客户端的请求。

不知道对你是否有帮助
shipp 2003-09-16
  • 打赏
  • 举报
回复
UP
allan1031 2003-09-16
  • 打赏
  • 举报
回复
骆驼祥子:
我不理解你所说的让miancirculate 成为主线程是什么意思,miancirculate 本来就是主线程啊,是我的主程序。

事实上,你说的方法我也用过的,没错,NOWTHREAD其实一直都在运作的,只要我没限定它产生的数量。只是这些所产生的nowthread实际上一直都在等待端口的释放。

谢谢你的帮助
allan1031 2003-09-16
  • 打赏
  • 举报
回复
不行,我试了,那只能限定客户端的最大连接数,也就是说只能限定客户端能连上几个---产生几个服务线程,可是端口方面还是在等待阶段。

谢谢你的帮助。
caodavid2003 2003-09-16
  • 打赏
  • 举报
回复
建议你让miancirculate 继承线程作为主线程Thread nowthread= new Thread(new ftplistenclass(InComing));nowthread.start();当nowthrtead线程运行时让主线程一直处于等待状态(在nowthread线程中写处理代码)

chineseren2000 2003-09-16
  • 打赏
  • 举报
回复
ServerSocket socket =new ServerSocket(FtpPort);构造函数中可以指定客户端链接数目,你可以试一试;祝你成功。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧