當前位置:首頁 » 編程語言 » javasocket線程

javasocket線程

發布時間: 2022-04-22 01:00:05

java socket 線程

以前寫過一個簡單的遠程式控制制軟體(命令行控制,就是在本機發個命令,在遠程機器執行),用的即使Socket,代碼找不到了,但原理很簡單。就是自己定義一個簡單協議,簡單點就用Java序列化,封一個自定義命令對象,每次發一個對象過去,對方接受後,執行命令對象就是了。
下面發一個間的JavaSocket例子:


importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.UnknownHostException;

publicclassJavaXmlSocket{

/**
*@paramargs
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException{
//TODOAuto-generatedmethodstub
finalServerSocketss=newServerSocket(32788);//創建服務端



newThread(){

@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
Sockets2=ss.accept();
ObjectOutputStreamoutput_s2;
ObjectInputStreaminput_s2;
output_s2=newObjectOutputStream(s2.getOutputStream());//服務端輸出流
input_s2=newObjectInputStream(s2.getInputStream());//服務端輸入流

//服務端向客戶端發送消息
output_s2.writeObject("hello");
Stringstr=(String)input_s2.readObject();
System.out.println("服務端接收端客戶端發送的消息:"+str);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}

}.start();//啟動一個線程服務端偵聽客戶端連接

newThread(){

@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
Sockets1=newSocket("127.0.0.1",32788);//創建客戶端,注冊並綁定ServerSocket
ObjectOutputStreamoutput_s1;

ObjectInputStreaminput_s1;
output_s1=newObjectOutputStream(s1.getOutputStream());//客戶端輸出流
input_s1=newObjectInputStream(s1.getInputStream());//客戶端輸入流

//客戶端向服務端發送消息
output_s1.writeObject("hello");
Stringstr2=(String)input_s1.readObject();
System.out.println("客戶端接收端服務端發送的消息:"+str2);
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}


}.start();////啟動一個線程客戶端端連接服務端

try{
//如果你保證Main方法不會退出,就不需要這個延時。
Thread.sleep(5000);//延時5秒等待消息處理結束關閉服務端。

}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

//關閉服務
ss.close();


}

}

㈡ java socket伺服器端線程卡死

對於socket通信的操作,不要放在主線程,另開一個子線程,順便一說,accept這個方法是堵塞的,在沒有收到消息的情況下會一直堵塞在那裡,所以如果你客戶端沒發送數據給服務端,那麼基本服務端所在那條線程會停滯在那個方法,估計就這原因讓你的程序看起來是卡死的,所以咯,別把通信的操作寫在主線程,要寫在子線程

㈢ java一個Socket連接多線程是否能操作兩個讀取流

可以啊 ,不過需要新建兩個實現Runnable 借口的類,重寫run方法,一個實現讀取,另一個實現輸出的功能。再用兩條線程分別操作這兩個方法。

㈣ java多線程socket通信原理是什麼

第一,程序是通過分時進行服務的。就是說一個程序監聽一個埠,第一秒可以從別的地方來一個包,第二秒可以從另一個地方來一個包。
第二,每個socket都會有包發送來的ip地址和埠號,伺服器向這個ip對應機器的埠發送數據以回應對方。

㈤ java socket 如何使輸入輸出流分別在不同線程工作

你這個問題我讀的不是很懂

Socket連接到ServerSocket後會返回一個Socket對象給伺服器,伺服器就通過這個Socket對象和客

戶端的Socket進行溝通,通過輸入輸出流取得和發送消息,我用到的對象有InputStream、

OutputStream(通過Socket的get****Stream獲得輸入輸出流),ObjectOutputStream、

ObjectInputStream(用於發送和接收一個對象)

接收端:肯定要開一個線程獨立運行,才能達到發送和接收消息互不幹擾

發送端:即一個方法,需要發送東西時調用,函數帶個發送的對象作為參數

大概就這些吧,希望能幫到你

㈥ java socket多線程的問題可以多個線程使用同一個socket嗎

可以寫個demo試一下啊,應該是可以的,socket接收到的消息只能被其中一個線程接收。線程1 和2 接受到的肯定不是同一個消息。會有先後之分。看你怎麼控制。比如從接收的消息是ABCD,那麼這相當於一個資源。線程1和2在這里拿消息,拿到之後,socket裡面就少了,比如線程1拿到AB,線程2拿到CD

㈦ Java多線程Socket的關閉問題

創建一個新線程時將這個線程對象的引用賦給一個變數:

MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();

在你的線程類中應該提供一個方法,用於關閉這個線程所創建的socket連接。例如你的MyThread類中應該提供一個關閉socket的方法:
public void closeSocket()
{
//這里關閉當前對象的socket
}

這樣,如果你想關閉thread1中的連接(該連接使用8888埠),則只要調用這個方法:

thread1.closeSocket();

㈧ 關於 java socket的消息推送問題

關於 java socket的消息推送問題,首先:開啟服務端,並暴露出埠。然後通過一個while的死循環去不停的接收來自客戶端的socket,並且通過一個ArrayList來維護。並且通過子線程去對list中的socket進行操作。
其次:客戶端去訪問伺服器的埠。開啟一個子線程去不停的接收來自服務端的消息。
然而關於推送服務的更多內容,可以通過深圳極光公司了解一下。深圳市和訊華谷信息技術有限公司(極光 Aurora Mobile)成立於2011年,是中國領先的開發者服務提供商,專注於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。
同時,極光的行業應用已經拓展至市場洞察、金融風控與商業地理服務,助力各行各業優化決策、提升效率。

熱點內容
手機網盤加密文件 發布:2025-01-27 13:11:43 瀏覽:694
唐山有線機頂盒密碼是多少 發布:2025-01-27 13:10:25 瀏覽:251
如何讓電腦上擁有移動式伺服器 發布:2025-01-27 13:04:46 瀏覽:67
漫威超級戰爭如何配置核心組合 發布:2025-01-27 13:03:19 瀏覽:954
c語言五子棋程序 發布:2025-01-27 12:58:43 瀏覽:157
win10流媒體伺服器怎麼搭建 發布:2025-01-27 12:58:04 瀏覽:384
組合公式的演算法 發布:2025-01-27 12:45:50 瀏覽:278
落櫻小屋哪裡下載安卓 發布:2025-01-27 12:35:13 瀏覽:72
微信伺服器IP跳轉 發布:2025-01-27 12:26:54 瀏覽:74
oracle自動備份腳本linux 發布:2025-01-27 12:21:40 瀏覽:937