更新時間:2020-08-07 16:49:04 來源:動力節點 瀏覽2388次
服務器端(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();
}
}
服務器端(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();
}
}
}
測試這個代碼的時候可以直接用DOS控制臺上面運行,這樣看的效果更清楚!
服務器基本步驟:
1.指定端口實例化一個SeverSocket
2.調用ServerSocket的accept()方法,以在等待連接期間造成阻塞
3.獲取位于該底層的Socket的流以進行讀寫操作
4.將數據封裝成流
5.對Socket進行讀寫
6.關閉打開的流
客戶端基本步驟:
1.通過IP地址和端口實例化Socket,請求連接服務器
2.獲得Socket上的流以進行讀寫
3.把流封裝進BufferedReader/PrintWriter的實例
4.對Socket進行讀寫
5.關閉打開的流
Java Socket編程教程:http://m.dabaquan.cn/tutorial_java_advance/683.html
以上就是動力節點java培訓機構的小編針對“Java socket編程多線程,標準范例”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習