更新時(shí)間:2020-08-07 16:49:04 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2831次
服務(wù)器端(Server)非多線程
package?com.zeph.serverclient;
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
import?java.net.ServerSocket;
import?java.net.Socket;
public?class?MyServer?{
public?static?void?main(String[]?args)?throws?IOException?{
ServerSocket?server?=?new?ServerSocket(5678);
Socket?client?=?server.accept();
BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(
client.getInputStream()));
PrintWriter?out?=?new?PrintWriter(client.getOutputStream());
while?(true)?{
String?str?=?in.readLine();
System.out.println(str);
out.println("has?receive....");
out.flush();
if?(str.equals("end"))
break;
}
client.close();
}
}
客戶端(Client)
package?com.zeph.serverclient;
import?java.io.BufferedReader;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
import?java.net.InetAddress;
import?java.net.Socket;
public?class?MyClient?{
static?Socket?server;
public?static?void?main(String[]?args)?throws?Exception?{
server?=?new?Socket(InetAddress.getLocalHost(),?5678);
BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(
server.getInputStream()));
PrintWriter?out?=?new?PrintWriter(server.getOutputStream());
BufferedReader?wt?=?new?BufferedReader(new?InputStreamReader(System.in));
while?(true)?{
String?str?=?wt.readLine();
out.println(str);
out.flush();
if?(str.equals("end"))?{
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
服務(wù)器端(Server)多線程
package?com.zeph.multiclient;
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
import?java.net.ServerSocket;
import?java.net.Socket;
?
public?class?MultiClient?extends?Thread?{
private?Socket?client;
?
public?MultiClient(Socket?c)?{
this.client?=?c;
}
?
public?void?run()?{
try?{
BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(
client.getInputStream()));
PrintWriter?out?=?new?PrintWriter(client.getOutputStream());
//?Mutil?User?but?can't?parallel
?
while?(true)?{
String?str?=?in.readLine();
System.out.println(str);
out.println("has?receive....");
out.flush();
if?(str.equals("end"))
break;
}
client.close();
}?catch?(IOException?ex)?{
}?finally?{
}
}
?
public?static?void?main(String[]?args)?throws?IOException?{
ServerSocket?server?=?new?ServerSocket(5678);
while?(true)?{
//?transfer?location?change?Single?User?or?Multi?User
?
MultiClient?mc?=?new?MultiClient(server.accept());
mc.start();
}
}
}
測試這個(gè)代碼的時(shí)候可以直接用DOS控制臺(tái)上面運(yùn)行,這樣看的效果更清楚!
服務(wù)器基本步驟:
1.指定端口實(shí)例化一個(gè)SeverSocket
2.調(diào)用ServerSocket的accept()方法,以在等待連接期間造成阻塞
3.獲取位于該底層的Socket的流以進(jìn)行讀寫操作
4.將數(shù)據(jù)封裝成流
5.對(duì)Socket進(jìn)行讀寫
6.關(guān)閉打開的流
客戶端基本步驟:
1.通過IP地址和端口實(shí)例化Socket,請(qǐng)求連接服務(wù)器
2.獲得Socket上的流以進(jìn)行讀寫
3.把流封裝進(jìn)BufferedReader/PrintWriter的實(shí)例
4.對(duì)Socket進(jìn)行讀寫
5.關(guān)閉打開的流

Java Socket編程教程:http://www.soulsinkind.com/tutorial_java_advance/683.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java socket編程多線程,標(biāo)準(zhǔn)范例”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)