❶ 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();
}
}
}
你自己理解下把。。。