您的位置:程序门 -> java -> j2se / 基础类



java网络问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java网络问题
发表于:2008-01-13 22:03:31 楼主
各位大侠,我是一名java初学者,现在正在学着做聊天的程序
遇到一个问题
服务端:
点击开始按钮
开始监听
然后点击结束就可以直接停止
可是开始监听是的一个阻塞过程,一旦开始监听,就不能点击结束按钮

不知道怎么解决
我用过线程,不过好像不对
请大侠给个思路
发表于:2008-01-13 23:30:311楼 得分:0
上监听器就行了,手工做的监听?
发表于:2008-01-14 00:07:012楼 得分:0
多线程啊~`接收到一个链接之后就生出一个线程出来处理~`主线程继续等待请求
发表于:2008-01-14 16:02:363楼 得分:0
可能我表述的不是很清楚,我想服务器就只有两个按钮
一个是开始按钮,另一个是结束按钮
开始则开始服务,结束则停止服务
在开始服务里面我的代码是:
serversock和sthread是已经进行定义的:sthread是产生socket类
                                   
                                    serversock=new   serversocket(1680);
                               
                                    try
{              
                sthread=new   socketthread(serversock);
t=new   thread(sthread);
t.start();
}
catch(ioexception   e)
{
system.out.println("startserver   wrong");
}

//--------------------------
class   socketthread   implements   runnable
{
serversocket   sersock;
boolean   flag=false;
socketthread(serversocket   ssocket)
{
sersock=ssocket;
flag=true;
}
public   void   run()
{
if(flag==false)
{
system.out.println("stop   here");
return;
}
try
{
socket   sock=sersock.accept();
string   fip[]=new   string[2];
string   fname[]=new   string[2];
fip[0]="1";
fip[1]="2";
fname[0]="11";
fname[1]="22";

frienddata   fdata=new   frienddata(1,new   date(),fip,fname);
friendsmess   fmess=new   friendsmess(fdata);


outputstream   os=sock.getoutputstream();
//inputstream   is=sock.getinputstream();
objectoutputstream   oos=new   objectoutputstream(os);
//objectinputstream   ois=new   objectinputstream(is);
oos.writeobject(fmess);
}
catch(ioexception   e)
{
system.out.println("listen   wrong");
}
}
}

然后我想按停止按钮就停止服务,不知道该怎么做,上面是通过flag来设定,不过不行的,错了,不知道用什么思路
发表于:2008-01-14 19:00:384楼 得分:0
在主线程侦听之前,启动一个新的线程
在那个线程里面生成停止按钮并把对应的事件写道线程里面。



快速检索

最新资讯
热门点击