[编程][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) {
}
}
}
} 展开
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) {
}
}
}
} 展开
展开全部
你是因为什么原因要终止这个线程的呢?直接把这个serverSocket close掉不行么?
如果你是因为程序出错,端口又被占用。可以这样查杀占用端口的进程。。。
netstat -na -o 找到占用1234端口的进程号
taskkill /pid 进程号
这样就可以杀死那个进程了····
如果是要在程序中控制的话,用close方法,然后把那个serverSocket置为null应该就可以了吧。。。
而且楼上说得对,你的程序本来就有问题,serverSocket 的实例话就不应该也在循环里面,估计你是接受到一个客户端以后,new 一个serverSocket ,继续绑定1234端口报错,所以才来提问的。这个是你程序的问题,并不需要去杀死那个什么线程。。。
如果你是因为程序出错,端口又被占用。可以这样查杀占用端口的进程。。。
netstat -na -o 找到占用1234端口的进程号
taskkill /pid 进程号
这样就可以杀死那个进程了····
如果是要在程序中控制的话,用close方法,然后把那个serverSocket置为null应该就可以了吧。。。
而且楼上说得对,你的程序本来就有问题,serverSocket 的实例话就不应该也在循环里面,估计你是接受到一个客户端以后,new 一个serverSocket ,继续绑定1234端口报错,所以才来提问的。这个是你程序的问题,并不需要去杀死那个什么线程。。。
展开全部
server = new ServerSocket();
server.setReuseAddress(true); //设置 ServerSocket 的选项
server.bind(new InetSocketAddress(port)); //与端口绑定
就可以不怕被占用了~
server.setReuseAddress(true); //设置 ServerSocket 的选项
server.bind(new InetSocketAddress(port)); //与端口绑定
就可以不怕被占用了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程,一根负责接收数据包,一根负责关闭serverSocket连接
追问
受不了,你可以把我当成一个小白吗?给我一个这样的例子也行,说的太空洞了,风一吹就散了。
追答
只是告诉你思路,多线程这个也要写?难道是我说的还不够明白吗?
ServerSocket实例一个就有了,你每次循环都创建了一个实例,有必要吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改一下
追问
我也知道修改一下
问:如何修改?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询