[编程][JAVA]在JAVA中如何终止线程中socket.accpet() ? 端口一直被占用

publicvoidrun(){ServerSocketserviceSocket=null;Socketsocket=null;InputStreamin=null;w... public void run() {
ServerSocket serviceSocket = null;
Socket socket = null;
InputStream in = null;
while(true){
try {
serviceSocket = new ServerSocket(1234);
socket = serviceSocket.accept();
in = socket.getInputStream();
byte buffer [] = new byte[1024];
int tmp = 0;
while((tmp = in.read(buffer)) != -1){
String result = new String(buffer,0,tmp);
System.out.println(result);
}
} catch (IOException e) {
} finally {
try {
if(in != null){
in.close();
}
if(socket != null){
socket.close();
}
if(serviceSocket != null){
serviceSocket.close();
}
} catch (IOException e) {
}
}
}
}
展开
 我来答
百度网友3c24f79
2011-08-14 · TA获得超过138个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:143万
展开全部
你是因为什么原因要终止这个线程的呢?直接把这个serverSocket close掉不行么?
如果你是因为程序出错,端口又被占用。可以这样查杀占用端口的进程。。。
netstat -na -o 找到占用1234端口的进程号
taskkill /pid 进程号
这样就可以杀死那个进程了····
如果是要在程序中控制的话,用close方法,然后把那个serverSocket置为null应该就可以了吧。。。
而且楼上说得对,你的程序本来就有问题,serverSocket 的实例话就不应该也在循环里面,估计你是接受到一个客户端以后,new 一个serverSocket ,继续绑定1234端口报错,所以才来提问的。这个是你程序的问题,并不需要去杀死那个什么线程。。。
xsxjb
2011-08-15
知道答主
回答量:17
采纳率:0%
帮助的人:9.8万
展开全部
server = new ServerSocket();
server.setReuseAddress(true); //设置 ServerSocket 的选项
server.bind(new InetSocketAddress(port)); //与端口绑定
就可以不怕被占用了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
源念云F
2011-08-14 · TA获得超过685个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:297万
展开全部
多线程,一根负责接收数据包,一根负责关闭serverSocket连接
追问
受不了,你可以把我当成一个小白吗?给我一个这样的例子也行,说的太空洞了,风一吹就散了。
追答
只是告诉你思路,多线程这个也要写?难道是我说的还不够明白吗?
ServerSocket实例一个就有了,你每次循环都创建了一个实例,有必要吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zc200950648
2011-08-14
知道答主
回答量:61
采纳率:0%
帮助的人:21.3万
展开全部
修改一下
追问
我也知道修改一下
问:如何修改?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式