弱弱的问:socket通讯的client和server端能实现单模式吗? 可以啊!我以前做过类似的程序~~在同一台机器上可以同时启动一个server,一个client的啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一台机器上当然可以同时启动一个server和一个client的但我想做的是,控制该client或server在同一时刻只启动一个,简单的说,就是一个应用程序的单模式问题,应该是可以的,好像应用程序启动后写一下注册表,然后运行同一个应用程序时判断注册表,然后做一些控制,好像是这样,但我没做过,不知道高手们能不能给点demo代码,谢谢大家了! : jh20001(十七郎)我的意思是对于client只启一个,server也只启一个,不是只启两者中的一个。: zhaoao5958(不会游泳的鱼) 怎样解决啊,请不吝赐教。感谢大家的关注和发言! 当然可以啊,为什么不可以呢。使用回环IP 127.0.0.1就可以了,当然不要有端口冲突。回环ip本来就是经常用来单机测试的。 : mercury1231(呵呵,其实我什么都不懂) 能不能说清楚啊?什么是回环IP啊?怎么用呢?谢谢了,真的很感谢 把你想做的东西说清楚一点吧,(我的意思是对于client只启一个,server也只启一个,不是只启两者中的一个。)你又说不是本机通讯,搞不明白你想做的是什么。 呵呵,楼主是不是这个意思:假如在本机已经开启了一个C或S程序。如果再重新运行这个C或S程序就应该启动不了了。是这个意思吗? 我的意思是这样的:举一个例子,我们运行ie,启动一次会打开一个ie窗口,启动两次会打开两个ie窗口,三次会有三个,依次类推;但是如果我们运行ultraedit,执行一次ultraedit.exe会运行一个ultraedit.exe,执行两次ultraedit.exe也只会打开同样的那个ultraedit.exe,三次也是一样,也只会打开同样的那个ultraedit.exe,依次类推。我想要做的事情,就是使我的client、server都能像ultraedit.exe一样,这样进行单线程或是单模式通讯,不知道这样说对不对?不知道我说得清不清楚,可能我有些概念还不是很清楚,所以表达起来有些困难,还请高手指教。 我觉得这应该不是问题吧,客户端的个数可以通过server端来控制ServerScoket(int port,int backlog),server端程序跑了一个之后,第二个在同一台机器上应该是跑不起来的。具体原因我也不太清楚,但我的一个server端程序在服务器跑起来之后,在跑一个就跑不起来。我估计是端口会有冲突,我给你我的code,你再分析一下吧。public class ControlMain{public static boolean tmpFlag=false;public synchronized static void SetSystemExit(){ tmpFlag=true; }public synchronized static boolean SystemExit(){ return tmpFlag; }public static void main(String args[]){ System.out.println("系统开始运行了");// MsgFormat msgFormat=new MsgFormat();// Queue userQueue = new Queue(); Queue listenQueue=new Queue(); Queue cortrolQueue = new Queue();/* StartCortrolQueue startCortrolQueue = new StartCortrolQueue(userQueue); // 初始化监控队列 startCortrolQueue.setDaemon(true); startCortrolQueue.start(); System.out.println("ListenDaemon");*/ CheckUserLogin checkUserLogin = new CheckUserLogin(); // 下面三行是启动检验用户合法性线程 checkUserLogin.setDaemon(true); checkUserLogin.start(); ListenDaemon listener=new ListenDaemon(listenQueue);//下面三行是启动消息监听线程,并且设置成为daemon listener.setDaemon(true); listener.start(); System.out.println("ListenCortrolDaemon"); ListenCortrolDaemon listenerCortrol=new ListenCortrolDaemon(cortrolQueue);//下面三行是启动监控订阅表监听线程,并且设置成为daemon listenerCortrol.setDaemon(true); listenerCortrol.start(); MainLogicThread mainLogicThread=new MainLogicThread(listenQueue,cortrolQueue);//下面三行是启动逻辑处理线程,并且设置成为daemon mainLogicThread.setDaemon(true); mainLogicThread.start(); System.out.println("系统初始化结束了"); while (!SystemExit()){ try{ Thread.sleep(500); }catch(Exception de){ } }//end of while try{ Thread.sleep(10000); }catch(Exception de){ } System.out.println("系统退出了"); }//end of main }//end of class CortrolMain 谁有尚学堂反射的视频 关于线程的停止 怎样用java清空串口的输入缓冲区? jsp登录问题? POI出错!-小妹在线等 请教JTable中列冻结的问题 关于获取JTextField的内容 急!急!急!JAVA是否开源 请教高手HTTPURLConnection的问题 新手怎样在DOS环境下编程,看看我的设置方法对吗?编译好像不行. Applet在读取文件时经常遇到access denied,如何解决? 关于一个登陆验证的问题~~~~~~~~~~~~~~
一台机器上当然可以同时启动一个server和一个client的但我想做的是,控制该client或server在同一时刻只启动一个,简单的说,就是一个应用程序的单模式问题,应该是可以的,好像应用程序启动后写一下注册表,然后运行同一个应用程序时判断注册表,然后做一些控制,好像是这样,但我没做过,不知道高手们能不能给点demo代码,谢谢大家了!
我的意思是对于client只启一个,server也只启一个,不是只启两者中的一个。
: zhaoao5958(不会游泳的鱼)
怎样解决啊,请不吝赐教。感谢大家的关注和发言!
回环ip本来就是经常用来单机测试的。
能不能说清楚啊?什么是回环IP啊?怎么用呢?谢谢了,真的很感谢
(我的意思是对于client只启一个,server也只启一个,不是只启两者中的一个。)你又说不是本机通讯,搞不明白你想做的是什么。
举一个例子,我们运行ie,启动一次会打开一个ie窗口,启动两次会打开两个ie窗口,三次会有三个,依次类推;但是如果我们运行ultraedit,执行一次ultraedit.exe会运行一个ultraedit.exe,执行两次ultraedit.exe也只会打开同样的那个ultraedit.exe,三次也是一样,也只会打开同样的那个ultraedit.exe,依次类推。
我想要做的事情,就是使我的client、server都能像ultraedit.exe一样,这样进行单线程或是单模式通讯,不知道这样说对不对?
不知道我说得清不清楚,可能我有些概念还不是很清楚,所以表达起来有些困难,还请高手指教。
server端程序跑了一个之后,第二个在同一台机器上应该是跑不起来的。具体原因我也不太清楚,但我的一个server端程序在服务器跑起来之后,在跑一个就跑不起来。我估计是端口会有冲突,
我给你我的code,你再分析一下吧。public class ControlMain{public static boolean tmpFlag=false;
public synchronized static void SetSystemExit(){
tmpFlag=true;
}
public synchronized static boolean SystemExit(){
return tmpFlag;
}public static void main(String args[]){
System.out.println("系统开始运行了");
// MsgFormat msgFormat=new MsgFormat();
// Queue userQueue = new Queue();
Queue listenQueue=new Queue();
Queue cortrolQueue = new Queue();
/* StartCortrolQueue startCortrolQueue = new StartCortrolQueue(userQueue); // 初始化监控队列
startCortrolQueue.setDaemon(true);
startCortrolQueue.start();
System.out.println("ListenDaemon");
*/ CheckUserLogin checkUserLogin = new CheckUserLogin(); // 下面三行是启动检验用户合法性线程
checkUserLogin.setDaemon(true);
checkUserLogin.start();
ListenDaemon listener=new ListenDaemon(listenQueue);//下面三行是启动消息监听线程,并且设置成为daemon
listener.setDaemon(true);
listener.start();
System.out.println("ListenCortrolDaemon");
ListenCortrolDaemon listenerCortrol=new ListenCortrolDaemon(cortrolQueue);//下面三行是启动监控订阅表监听线程,并且设置成为daemon
listenerCortrol.setDaemon(true);
listenerCortrol.start();
MainLogicThread mainLogicThread=new MainLogicThread(listenQueue,cortrolQueue);//下面三行是启动逻辑处理线程,并且设置成为daemon
mainLogicThread.setDaemon(true);
mainLogicThread.start();
System.out.println("系统初始化结束了");
while (!SystemExit()){
try{
Thread.sleep(500);
}catch(Exception de){
}
}//end of while
try{
Thread.sleep(10000);
}catch(Exception de){
}
System.out.println("系统退出了"); }//end of main
}//end of class CortrolMain