Socket,ServerSocket,WebSocket


一 區別

首先來說下區別吧, 
Socket和ServerSocket 指傳輸層網絡接口協議,是基於套接字的服務端和客戶端實現。 
而WebScoket是應用層協議,是客戶端-服務器的異步通信方法,用於雙向推送消息。

 

一、Socket通信基本示例

  這種模式是基礎,必須掌握,后期對Socket的優化都是在這個基礎上的,也是為以后學習NIO做鋪墊。

package yiwangzhibujian.onlysend;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
  public static void main(String[] args) throws Exception {
    // 監聽指定的端口
    int port = 55533;
    ServerSocket server = new ServerSocket(port);
    
    // server將一直等待連接的到來
    System.out.println("server將一直等待連接的到來");
    Socket socket = server.accept();
    // 建立好連接后,從socket中獲取輸入流,並建立緩沖區進行讀取
    InputStream inputStream = socket.getInputStream();
    byte[] bytes = new byte[1024];
    int len;
    StringBuilder sb = new StringBuilder();
    while ((len = inputStream.read(bytes)) != -1) {
      //注意指定編碼格式,發送方和接收方一定要統一,建議使用UTF-8
      sb.append(new String(bytes, 0, len,"UTF-8"));
    }
    System.out.println("get message from client: " + sb);
    inputStream.close();
    socket.close();
    server.close();
  }
}

  服務端監聽一個端口,等待連接的到來。

package yiwangzhibujian.onlysend;

import java.io.OutputStream;
import java.net.Socket;

public class SocketClient {
  public static void main(String args[]) throws Exception {
    // 要連接的服務端IP地址和端口
    String host = "127.0.0.1"; 
    int port = 55533;
    // 與服務端建立連接
    Socket socket = new Socket(host, port);
    // 建立連接后獲得輸出流
    OutputStream outputStream = socket.getOutputStream();
    String message="你好  yiwangzhibujian";
    socket.getOutputStream().write(message.getBytes("UTF-8"));
    outputStream.close();
    socket.close();
  }
}

  客戶端通過ip和端口,連接到指定的server,然后通過Socket獲得輸出流,並向其輸出內容,服務器會獲得消息。最終服務端控制台打印如下:

server將一直等待連接的到來
get message from client: 你好  yiwangzhibujian

  通過這個例子應該掌握並了解:

  • Socket服務端和客戶端的基本編程
  • 傳輸編碼統一指定,防止亂碼

  這個例子做為學習的基本例子,實際開發中會有各種變形,比如客戶端在發送完消息后,需要服務端進行處理並返回,如下。

 

 

java 實現websocket的兩種方式

簡單說明

1.兩種方式,一種使用tomcat的websocket實現,一種使用spring的websocket

2.tomcat的方式需要tomcat 7.x,JEE7的支持。 

3.spring與websocket整合需要spring 4.x,並且使用了socketjs,對不支持websocket的瀏覽器可以模擬websocket使用

方式一:tomcat

 https://www.cnblogs.com/xiaohuizhenyoucai/p/10670292.html

 

方式一:spring

 https://www.cnblogs.com/xiaohuizhenyoucai/p/10671290.html

參考: https://www.cnblogs.com/interdrp/p/7903736.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM