❶ java中短时间new Socket次数过多,并且socket.close() 并不是释放连接,而是设置成了time_wait状态怎么处理
如果短时间内需要建立的连接过多的话,建议使用Socket线程池来做处理。new 太多的话,占的内存会很多,速度变慢。
❷ java socket 客户端能 多次 随时 向客户端发送会话吗要怎么实现,能举个例子吗 在线等,谢谢再次谢谢
可以做的到,但这个是有前提的,就好像QQ一样,必须对方在线,他才能收到你的会话。
比如说多次,你可以采用循环输入,等到满足一个条件时,退出!
比如说发送方代码如下:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
class practise12{
public static void main(String[] args) throws SocketException, UnknownHostException, IOException{
DatagramSocket ds=new DatagramSocket(3000);
DatagramPacket dp=null;
String str="";
do{
System.out.println("请输入:");
Scanner input=new Scanner(System.in);
str=input.next();
dp=new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),8000);
ds.send(dp);
}while(str.compareTo("exit")!=0);
ds.close();
}
}
这样你就可以多次发送会话,当发送方输入“exit”时,程序就会退出。
接收方也是同样道理:当接收到“exit”时,程序退出。
一点灼见,希望对你有用!
❸ java中的一个Socket能不能发送多条数据
你这个问题问的我很尴尬,也有点不知道咋回,我大体说说,看能回否解决你的问题答,答:
能。
把socket作成一个长连接,后者说socket本身就是一个种链接,这个链接你不kill掉,就会存在(理论上。。。),他会一直发送数据,具体是否触发看你自己是怎么写的,比如某个东西改变就发送一次,那么下次这个东西改变,他还会发送一次。
我纠结的是,如果你问的不是socket能不能多次发送数据,而是一次发送能不能是多条数据,貌似也是可以的,,,
就算不可以,你也可以把多条数据存到一个对象里给发过去,到了接收端取相应的属性值即可。
——————本人菜鸟,大神勿喷
❹ Java服务端如何用Socket处理单台客户端的多次请求
”服务端在复返回权限之后,socket就关闭制了。“这说明你设计的有问题,应该返回权限后继续处理,增删改查等业务,否则会有安全问题。
我觉得,socket初始化、用户验证、每个业务请求所对应的处理,这一套操作应该放在监听的一次循环里,整个结构还是死循环。
其实,最常用的验证身份的机制是像Java Web里面的session,用户信息放进去以后,一段时间内客户过来的多次请求都从session里的用户信息验证就可以了,这也是http这种无连接方式的机制。你的这种需求这样实现比较方便啊,而且有很多增删改查的框架比如hibernate可用,为什么要用Socket发明轮子呢,最差也可以用嵌入式的tomcat或jetty这种服务器把服务嵌入到程序里实现桌面应用啊。
❺ java socket中。怎么让socket连接多次,我接收数据,再发送报了socket的错误。
socket可以长时间存在,不关闭的话可以一直通话,你可以向里面输入信息,客户端或者服务端都能读取,干嘛需要不断的请求?
❻ java socket长链接接收tcp响应的时候,怎样区分多次的响应
//客户端
importjava.net.*;
importjava.io.*;
publicclassTCPClient{
publicstaticvoidmain(String[]args)throwsException{
Sockets=newSocket("127.0.0.1",6666);
OutputStreamos=s.getOutputStream();
DataOutputStreamdos=newDataOutputStream(os);
Thread.sleep(30000);
dos.writeUTF("helloserver!");
dos.flush();
dos.close();
s.close();
}
}
//服务器端
importjava.net.*;
importjava.io.*;
publicclassTCPServer{
publicstaticvoidmain(String[]args)throwsException{
ServerSocketss=newServerSocket(6666);
while(true){
Sockets=ss.accept();
System.out.println("aclientconnect!");
DataInputStreamdis=newDataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
}
}
}
你自己理解下把。。。