更新時(shí)間:2020-08-19 16:28:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2687次
⒈ 所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。
操作java socket時(shí)用到的最多的三個(gè)方法為:
accept():主要用于服務(wù)器端產(chǎn)生“阻塞”,等待客戶端的鏈接請(qǐng)求,并且返回一個(gè)客戶端的Socket實(shí)例;
getInputStream():方法主要用來(lái)獲得網(wǎng)絡(luò)連接輸入,同時(shí)返回一個(gè)InputStream對(duì)象實(shí)例;
getOutputStream():方法和上面的getInputStream相反。
⒉ 一般要建立Java的Socket連接,應(yīng)首先明確服務(wù)器端和客戶端,服務(wù)器端使用ServerSocket監(jiān)聽(tīng)指定的端口,使用accept等待客戶端請(qǐng)求,鏈接鏈接,開(kāi)始會(huì)話、完成會(huì)話后,關(guān)閉鏈接。(注意,一般socket的關(guān)閉都應(yīng)該是服務(wù)器端來(lái)進(jìn)行的,后面說(shuō));客戶端使用Socket對(duì)網(wǎng)絡(luò)中的某個(gè)服務(wù)器的某個(gè)端口發(fā)出鏈接請(qǐng)求,連接成功,開(kāi)始會(huì)話,會(huì)話完成,Socket關(guān)閉。
示例代碼:
服務(wù)器端:
package?com.icer.server;
import?java.io.BufferedReader;
import?java.io.IOException;
import?
java.io.InputStreamReader;
import?java.io.OutputStream;
import?
java.io.PrintWriter;
import?java.net.ServerSocket;
import?
java.net.Socket;
/**
?*?Server
?*?
?*?@author?Icer
?*?
?*/
public?class?
Server?{
????private?ServerSocket?ss;
????private?Socket?s;
????private?
BufferedReader?br;
????private?PrintWriter?pw;
????public?Server()?{
????????try?{
????????????????ss?=?new?
ServerSocket(10000);
????????????????System.out.println("Server?is?
starting...");
????????????????s?=?ss.accept();
????????????????br?=?new?
BufferedReader(new?InputStreamReader(s.getInputStream()));
????????????????pw?
=?new?PrintWriter(s.getOutputStream(),true);
????????????????String?line?=?
br.readLine();
????????????????System.out.println(line);
????????????????pw.println("your?word?is:"?+?line);
????????????????//pw.println("helloworld");
????????????????br.close();
????????????????pw.close();
????????}?catch?(IOException?ie)?{
????????????ie.printStackTrace();
????????}
????}
????public?static?void?main(String[]?args)?throws?Exception?{
????????new?
Server();
????}
}
客戶端:
package?com.icer.client;
import?java.io.BufferedReader;
import?java.io.File;
import?
java.io.FileInputStream;
import?java.io.IOException;
import?
java.io.InputStreamReader;
import?java.io.PrintWriter;
import?
java.net.Socket;
/**
?*?Client
?*?@author?Icer
?*
?*/
public?class?Client?
{
????private?Socket?s;
????private?BufferedReader?br;
????//private?BufferedReader?line;
????private?PrintWriter?pw;
????private?
String?line?=?"";
????public?Client()?{
????????try{
????????????s?=?
new?Socket("127.0.0.1",10000);
????????????pw?=?new?
PrintWriter(s.getOutputStream(),true);
????????????br?=?new?
BufferedReader(new?InputStreamReader(s.getInputStream()));
????????????pw.println("hello");
????????????line?=?br.readLine();
????????????System.out.println(line);
????????????br.close();
????????????pw.close();
????????}catch(IOException?ie){
????????????ie.printStackTrace();
????????}
????}
????public?static?void?
main(String[]?args)?throws?Exception?{
????????new?Client();
????}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java socket編程實(shí)例代碼講解”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(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)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)