Java Socket應用 通信技術

1.TCP(Transmission Control Protocol)傳輸控制協議,是面向鏈接的,可靠的,有序的,基於字節流的傳輸層通信協議。
2.UDP(User Datagram Protocol)用戶數據報協議,是面向無連接的,不可靠的,無序的,面向報文的傳輸層通信協議。
Java中基於TCP提供的兩個重要的類是服務端的ServerSocket和客戶端的socket。基於UDP提供的連個類是DatagramPacket和DatagramSocket。具體代碼如下:
TCP客戶端:

try {
            Socket sc = new Socket("192.168.1.114",8650);
            OutputStream os = sc.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("用戶名:admin;密碼:123456");
            System.out.println("哈哈");
            pw.flush();
            sc.shutdownOutput();
            InputStream is = sc.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = br.readLine();
            while(str!=null){
                System.out.println("我是客戶端:服務器說:"+str);
                str = br.readLine();
            }
            is.close();
            br.close();
            os.close();
            pw.close();
            sc.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

TCP服務端:

try {
            ServerSocket ss = new ServerSocket(8650);
            //調用accept方法
            System.out.println("****服務器即將啓動,等待鏈接****");
            Socket so = ss.accept();
            //通過輸入輸入量獲取信息
            InputStream is = so.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String info = br.readLine();
            while(info!=null){
                System.out.println("服務端:"+info);
                info = br.readLine();
            }
            so.shutdownInput();
            OutputStream os = so.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("歡迎");
            pw.flush();
            pw.close();
            os.close();
            is.close();
            isr.close();
            br.close();
            ss.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

UDP客戶端:

InetAddress ia = InetAddress.getByName("localhost");
         int port=8650;
         byte[] data = "用戶名:啊哈,密碼:123456".getBytes();
         DatagramPacket dp = new DatagramPacket(data, data.length,ia,port);
         DatagramSocket ds = new DatagramSocket();
         ds.send(dp);

         byte[] data2 = new byte[1024];
         DatagramPacket dp2 = new DatagramPacket(data2, data2.length);
         ds.receive(dp2);
         String info = new String(data2, 0, dp2.getLength());
         System.out.println("客戶端:服務器說:"+info);
         ds.close();

UDP服務端:

DatagramSocket ds = new DatagramSocket(8650); 
         byte[] data = new byte[1024];
         DatagramPacket dp = new DatagramPacket(data, data.length);
         System.out.println("********服務器端已經啓動,等待鏈接********");
         ds.receive(dp);
         String info = new String(data, 0, dp.getLength());
         System.out.println("服務器端:客戶說:"+info);
         InetAddress ia = dp.getAddress();
         int port = dp.getPort();
         System.out.println(port);
         byte[] data2 = "歡迎你".getBytes();
         DatagramPacket packet2 = new DatagramPacket(data2, data2.length, ia,port);
         ds.send(packet2);
         ds.close();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章