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