JavaSocket
生活随笔
收集整理的這篇文章主要介紹了
JavaSocket
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于tcp通信的socket
?
import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket;/** 基于TCP通信的Socket,服務器端*/ public class Server{public static void main(String[] args) throws IOException {//1.創建ServerSocket,綁定端口ServerSocket serverSocket = new ServerSocket(3333);//2.時刻監聽端口System.out.println("*****服務器已啟動等待客戶端連接*****");Socket socket = null;long count = 0;while(true){socket = serverSocket.accept();ServerThread serverThread = new ServerThread(socket);serverThread.start();count++;InetAddress address = socket.getInetAddress();System.out.println("客戶端ip"+address.getHostAddress());System.out.println("客戶端主機名"+address.getLocalHost());System.out.println("連接本機的數量"+count);}} } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket;public class ServerThread extends Thread{Socket socket = null;//初始化public ServerThread(Socket socket){this.socket = socket;}@Overridepublic void run() {InputStream is=null;InputStreamReader isr=null;BufferedReader br=null;OutputStream os=null;PrintWriter pw=null;try {//1.獲取輸入流,獲取客戶端信息is = socket.getInputStream();isr = new InputStreamReader(is);br = new BufferedReader(isr);String info;while((info = br.readLine())!=null){ System.out.println("這里是服務端,客戶端說:"+info);}socket.shutdownInput();//注意shutdown的順序//2.響應客戶端os = socket.getOutputStream();pw = new PrintWriter(os);pw.write("我是服務端,歡迎您!");pw.flush();socket.shutdownOutput();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//3.關閉資源try {if(pw!=null)pw.close();if(os!=null)os.close(); if(br!=null)br.close();if(isr!=null)isr.close();if(is!=null)is.close();if(socket!=null)socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} }?
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;public class Client {public static void main(String[] args) throws UnknownHostException, IOException {//1.創建socket對象,綁定主機和端口Socket socket = new Socket("localhost", 3333);//2.獲取輸出流,發送信息OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os);pw.write("我是客戶端1!");pw.flush();socket.shutdownOutput();//3.響應服務端InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));String info;while((info=br.readLine())!=null){System.out.println("我是客戶端,服務端說"+info);}socket.shutdownInput();//4.關閉資源br.close();is.close();pw.close();os.close();socket.close();} }
基于udp通信的socket
?
?
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;/** 基于UDP通信的Socket,服務器端*/ public class UDPServer {public static void main(String[] args) throws IOException {/** 接受客戶端信息*///1.創建服務器端,指定端口DatagramSocket socket = new DatagramSocket(4444);//2.創建數據包,接受客戶端數據byte[] data = new byte[1024];DatagramPacket packet = new DatagramPacket(data, data.length);//3.接受客戶端數據socket.receive(packet);//此方法在接受信息之前一直阻塞//4.讀取數據String info = new String(data, 0, packet.getLength());System.out.println("我是服務器,客戶端說"+info);/** 響應客戶端*/InetAddress address = packet.getAddress();int port = packet.getPort();byte[] data1 = "歡迎您".getBytes();DatagramPacket packet2 = new DatagramPacket(data1, data1.length, address,port);socket.send(packet2);socket.close();}}?
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException;/** 客戶端*/ public class UDPClient {public static void main(String[] args) throws IOException {/** 發送數據*///1.定義服務器地址端口號數據InetAddress address = InetAddress.getByName("localhost");int port=4444;byte[] data = "我是客戶端".getBytes();//2.創建數據報,包含要發送的信息DatagramPacket packet = new DatagramPacket(data,data.length, address, port);//3.發送數據DatagramSocket socket = new DatagramSocket();socket.send(packet);/** 響應服務器數據*/byte[] data1 = new byte[1024];DatagramPacket packet1 = new DatagramPacket(data1, data1.length);//3.接受客戶端數據socket.receive(packet1);//此方法在接受信息之前一直阻塞//4.讀取數據String info = new String(data1, 0, packet1.getLength());System.out.println("我是客戶端,服務端說"+info);socket.close();} }
下面關于InetAddress和URL類的例子
?
?
import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays;public class Test1 {public static void main(String[] args) throws UnknownHostException {//獲取本機InetAddress實例InetAddress address = InetAddress.getLocalHost();System.out.println("計算機名"+address.getHostName());System.out.println("IP"+address.getHostAddress());//字節數組形式的IP地址byte[] bytes = address.getAddress();System.out.println("字節數組形式IP"+Arrays.toString(bytes));//根據機器名獲取InetAddress實例InetAddress address2 = InetAddress.getByName("169.254.82.89");//InetAddress address2 = InetAddress.getByName("idea-PC");System.out.println("計算機名"+address2.getHostName());System.out.println("IP"+address2.getHostAddress());} } import java.net.MalformedURLException; import java.net.URL;public class Test2 {public static void main(String[] args) throws MalformedURLException {//創建一個URL實例,注意+httpURL baidu = new URL("http://www.baidu.com");URL url = new URL(baidu, "/index.html?name=aa#image");System.out.println("協議:"+url.getProtocol());System.out.println("主機:"+url.getHost());System.out.println("文件路徑:"+url.getPath());System.out.println("文件:"+url.getFile());System.out.println("相對路徑:"+url.getRef());System.out.println("查詢字符串:"+url.getQuery());//如果未指定端口號,則使用默認的端口號,返回值為-1System.out.println("端口號:"+url.getPort());} }?
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL;/** URL讀取網絡上內容*/ public class Test3 {public static void main(String[] args) throws IOException {URL url = new URL("http://www.baidu.com");InputStream is = url.openStream();InputStreamReader isr = new InputStreamReader(is,"utf-8");BufferedReader br = new BufferedReader(isr);String data = br.readLine();while(data!=null){System.out.println(data);data = br.readLine();}br.close();isr.close();is.close();} }?
?
?
最近在整理一些資源工具,放在網站分享?http://tools.maqway.com
歡迎關注公眾號:麻雀唯伊 , 不定時更新資源文章,生活優惠,或許有你想看的
?
?
?
?
?
總結
以上是生活随笔為你收集整理的JavaSocket的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马云接班人为什么是张勇?
- 下一篇: java 年龄_Java 计算年龄