-
ip地址和端口號(hào)組成了所謂的socket查看全部
-
端口號(hào)用來區(qū)別一臺(tái)主機(jī)上不同應(yīng)用程序的通信。查看全部
-
package?com.study.socket; import?javax.sound.sampled.Port; import?java.io.IOException; import?java.net.*; /** ?*?UDP?Client客服端 ?*/ public?class?UDPClient?{ ????public?static?void?main(String[]?args)?throws?IOException?{ ????????//1.定義消息?服務(wù)端ip地址?端口號(hào) ????????String?msg?=?"用戶名:sw;密碼:123456"; ????????InetAddress?address?=?InetAddress.getByName("DESKTOP-VQBUTGQ"); ????????int?port?=?8000; ????????//2.創(chuàng)建數(shù)據(jù)報(bào) ????????byte[]?data?=?msg.getBytes(); ????????DatagramPacket?packet?=?new?DatagramPacket(data,?data.length,?address?,?port?); ????????//3.創(chuàng)建socket ????????DatagramSocket?socket?=??new?DatagramSocket(); ????????//4.發(fā)送消息 ????????socket.send(packet); ????????//5.接收反饋信息 ????????byte[]?data1?=?new?byte[1024]; ????????DatagramPacket?packet1?=?new?DatagramPacket(data1?,?0?,?data1.length); ????????socket.receive(packet1); ????????String?rt?=?new?String(data1,0,packet1.getLength()); ????????System.out.println("這是客戶端,服務(wù)端反饋信息為:?"?+?rt); ????????//5.釋放資源 ????????socket.close(); ????} }
package?com.study.socket; import?java.io.IOException; import?java.net.DatagramPacket; import?java.net.DatagramSocket; import?java.net.InetAddress; import?java.net.SocketException; /** *?UDP?服務(wù)器端 */ public?class?UDPServer?{ ???public?static?void?main(String[]?args)?{ ???????try?{ ???????????//1.建立socket并制定端口號(hào) ???????????DatagramSocket?socket?=?new?DatagramSocket(8000); ???????????int?num?=?0; ???????????while?(true){ ???????????????UDPServerThread?thread?=?new?UDPServerThread(socket); ???????????????thread.setPriority(4); ???????????????thread.run(); ???????????????num++; ???????????????System.out.println("服務(wù)器端接受了?"?+?num?+?"?個(gè)客戶端請(qǐng)求!"); ???????????} ???????}?catch?(SocketException?e)?{ ???????????e.printStackTrace(); ???????}?catch?(IOException?e)?{ ???????????e.printStackTrace(); ???????} ???} }
package?com.study.socket; import?java.io.IOException; import?java.net.DatagramPacket; import?java.net.DatagramSocket; import?java.net.InetAddress; /** *?UDP?server?多線程實(shí)現(xiàn) */ public?class?UDPServerThread?extends?Thread{ ???DatagramSocket?socket?=?null; ???public?UDPServerThread(DatagramSocket?socket){ ???????this.socket?=?socket; ???} ???@Override ???public?void?run()?{ ???????try?{ ???????????byte[]?data?=?new?byte[1024]; ???????????DatagramPacket?packet?=?new?DatagramPacket(data,data.length); ???????????//3.接收客戶端發(fā)送的數(shù)據(jù)信息 ???????????socket.receive(packet);//此方法在接收到數(shù)據(jù)報(bào)之前一直阻塞 ???????????//4.讀取數(shù)據(jù)報(bào)信息 ???????????String?msg?=?new?String(data,0,packet.getLength()); ???????????System.out.println("UDP?server服務(wù)器接收到的信息:?"?+?msg); ???????????//5.反饋信息 ???????????String?rt?=?"歡迎您!"; ???????????byte[]?data1?=?rt.getBytes(); ???????????InetAddress?address?=?packet.getAddress(); ???????????int?port?=?packet.getPort(); ???????????DatagramPacket?packet1?=?new?DatagramPacket(data1,?data1.length?,?address?,?port?); ???????????socket.send(packet1); ???????}?catch?(IOException?e)?{ ???????????e.printStackTrace(); ???????} ???} }
查看全部 -
package?com.study.socket; import?java.io.IOException; import?java.io.OutputStreamWriter; import?java.io.PrintWriter; import?java.net.Socket; /** *?socket編程模擬客服端 */ public?class?Client?{ ???public?static?void?main(String[]?args)?{ ???????//1.創(chuàng)建客戶端socket ???????Socket?socket?=?null; ???????try?{ ???????????socket?=?new?Socket("127.0.0.1",8888); ???????????//2.獲取輸出流 ???????????OutputStreamWriter?osw?=?new?OutputStreamWriter(socket.getOutputStream()); ???????????PrintWriter?pw?=?new?PrintWriter(osw); ???????????pw.write("用戶名:polly;密碼:809"); ???????????pw.flush(); ???????????//4.釋放資源 ???????????pw.close(); ???????????osw.close(); ???????????socket.close(); ???????}?catch?(IOException?e)?{ ???????????e.printStackTrace(); ???????} ???} }
package?com.study.socket; import?java.io.*; import?java.net.ServerSocket; import?java.net.Socket; /** *?socket編程模擬服務(wù)器端 */ public?class?Server?{ ???public?static?void?main(String[]?args)?{ ???????try?{ ???????????//1.建立服務(wù)端socket ???????????ServerSocket?serverSocket?=?new?ServerSocket(8888); ???????????int?num?=?0; ???????????while(true){ ???????????????//2.監(jiān)聽端口 ???????????????Socket?socket?=?serverSocket.accept(); ???????????????ServerThread?st?=?new?ServerThread(socket); ???????????????st.setPriority(4);//設(shè)置線程的優(yōu)先級(jí),范圍是【1,10】??默認(rèn)是5 ???????????????st.start(); ???????????????num++; ???????????????System.out.println("服務(wù)器端接受?"?+?num?+?"?個(gè)客戶端請(qǐng)求!"); ???????????} ???????}?catch?(IOException?e)?{ ???????????e.printStackTrace(); ???????} ???} }
package?com.study.socket; import?java.io.*; import?java.net.Socket; /** *?服務(wù)器線程實(shí)現(xiàn) */ public?class?ServerThread?extends?Thread?{ ???Socket?socket?=?null; ???public?ServerThread(Socket?socket){ ???????this.socket?=?socket; ???} ???@Override ???public?void?run()?{ ???????if(socket?!=?null){ ???????????//讀取輸入流 ???????????InputStream?is?=?null; ???????????InputStreamReader?isr?=?null; ???????????BufferedReader?br?=?null; ???????????OutputStreamWriter?osw?=?null; ???????????PrintWriter?pw?=?null; ???????????try?{ ???????????????is?=?socket.getInputStream(); ???????????????isr?=?new?InputStreamReader(is); ???????????????br?=?new?BufferedReader(isr); ???????????????System.out.println("服務(wù)器讀取客戶端信息:"?+?socket.getLocalAddress()?+?"?:?"?+ ???????????????????????socket.getLocalPort()??+?"?"?+?br.readLine()); ???????????????//返回響應(yīng)流 ???????????????osw?=?new?OutputStreamWriter(socket.getOutputStream()); ???????????????pw?=?new?PrintWriter(osw); ???????????????pw.write("請(qǐng)求已接到!"); ???????????????pw.flush(); ???????????}?catch?(IOException?e)?{ ???????????????e.printStackTrace(); ???????????}?finally?{ ???????????????//關(guān)閉資源 ???????????????try?{ ???????????????????if(pw?!=?null)??pw.close(); ???????????????????if(osw?!=?null)??osw.close(); ???????????????????if(br?!=?null)??br.close(); ???????????????????if(isr?!=?null)??isr.close(); ???????????????????if(is?!=?null)??is.close(); ???????????????????if(socket?!=?null)??socket.close(); ???????????????}?catch?(IOException?e)?{ ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????} ???} }
查看全部 -
基于udp通信:
查看全部 -
Socket socket=serverSocket.accept();
查看全部 -
URL--統(tǒng)一資源定位符=協(xié)議名稱:資源名稱
java.net提供URL類表示URL? ?
1.URL類中的常用方法:
//創(chuàng)建一個(gè)URL對(duì)象
? ? URL url = new URL("http://www.baidu.com");??
? ? URL url1 = new URL(url, "/index.html?usrname=lqq#test");
//url的常用方法
? ? System.out.println("URL主機(jī)名稱:"+url1.getHost());
? ? System.out.println("URL協(xié)議:"+url1.getProtocol());
? ? System.out.println("URL端口:"+url1.getPort());
? ? System.out.println("URL文件路徑:"+url1.getPath());
? ? System.out.println("URL查詢字符串:"+url1.getQuery());
? ? System.out.println("URL相對(duì)路徑:"+url1.getRef());
? ? System.out.println("URL文件名:"+url1.getFile());? ?
2.通過URL獲取html文件內(nèi)容:
public static void main(String[] args) throws IOException {
? ?URL url=new URL("http://www.snnu.edu.cn");
? ?InputStream is =url.openStream();
? ?InputStreamReader isr=new InputStreamReader(is);
? ?BufferedReader bufferedReader = new BufferedReader(isr);
? ?String data=bufferedReader.readLine();
? ?while (data!=null){
? ? ? ?System.out.println(data);
? ? ? ?data=bufferedReader.readLine();
? ?}
? ?bufferedReader.close();
? ?isr.close();
? ?is.close();
}查看全部 -
網(wǎng)絡(luò)基礎(chǔ)知識(shí)
地址、端口號(hào)、協(xié)議
java 提供的網(wǎng)絡(luò)功能有四大類
InetAddress :用于標(biāo)識(shí)網(wǎng)絡(luò)上的硬件資源
URL:統(tǒng)一資源定位符 通過URL可以直接讀取或?qū)懭刖W(wǎng)絡(luò)上的數(shù)據(jù)
Sockets:使用TCP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)通信的Socket相關(guān)的類
Datagram:使用UDP協(xié)議,將數(shù)據(jù)保存在數(shù)據(jù)報(bào)中,通過網(wǎng)絡(luò)進(jìn)行通信。
?
查看全部 -
通信模型啊
查看全部 -
InetAddress.getLocalhost();獲取InetAddress實(shí)例
查看全部 -
Socket編程
1、網(wǎng)絡(luò)基礎(chǔ)知識(shí)
2、InetAddress類
3、URL
4、TCP編程(Socket)
5、UDP編程(Datagram)
IP、端口、協(xié)議(共同語言)
tcp/ip模型?物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層
端口號(hào)范圍0~65535,0~1023為系統(tǒng)保留
Java網(wǎng)絡(luò)功能四大類:InetAddress、URL、Socket、Datagram
查看全部 -
多線程的知識(shí)點(diǎn)
查看全部 -
Socket通信模型
查看全部 -
實(shí)際應(yīng)用時(shí)是以對(duì)象的形式進(jìn)行傳輸
查看全部 -
不必關(guān)閉輸入輸出流
查看全部
舉報(bào)