第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在java服務(wù)器和javascript客戶端之間使用socket通信?

如何在java服務(wù)器和javascript客戶端之間使用socket通信?

喵喵時(shí)光機(jī) 2023-07-28 16:01:57
我正在嘗試使用socket.io 連接java 服務(wù)器和Javascript 客戶端。當(dāng)我在瀏覽器中看到調(diào)試器時(shí),看起來(lái)正在接收數(shù)據(jù),但我收到此錯(cuò)誤:“原因:CORS 標(biāo)頭‘Access-Control-Allow-Origin’丟失”并且我無(wú)法打印數(shù)據(jù)在客戶端。import...public class MeuServerSocket {    //initialize socket and input stream     private Socket socket = null;    private ServerSocket server = null;    private DataInputStream in = null;    public MeuServerSocket(int port) {        // starts server and waits for a connection         try {            while(true){            server = new ServerSocket(port);            System.out.println("Server started");            System.out.println("Waiting for a client ...");            socket = server.accept();            System.out.println("Client accepted");            ObjectOutputStream saida = new ObjectOutputStream(socket.getOutputStream());            saida.flush();            // send available data from server to client            saida.writeObject("Texto enviado 123...");            // takes input from the client socket             in = new DataInputStream(                 new BufferedInputStream(socket.getInputStream()));             String line = "";             // reads message from client until "Over" is sent             boolean fim = false;            while (!line.equals("Over") && !fim)             {                 try                {                     line = in.readUTF();                     System.out.println(line);                 }                 catch(IOException i)                 {                     fim = true;                    System.out.println(i.toString());                }             }             System.out.println("Closing connection");            // close connection             socket.close();            saida.close();            in.close();            }        } catch (IOException i) {            System.out.println(i);        }catch(Exception e){            System.out.println(e.toString());        }    }當(dāng)我查看 Firefox 網(wǎng)絡(luò)時(shí),我發(fā)現(xiàn)數(shù)據(jù)是在其中一個(gè)包內(nèi)發(fā)送的......https://i.stack.imgur.com/yB0R6.jpg
查看完整描述

2 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

我在這里看到的最大問(wèn)題是對(duì) socket.io 的誤解。javascript 的 Socket.io 與 java 中的 Socket 庫(kù)不兼容。命名約定肯定會(huì)令人困惑。

socket.io 是一個(gè)與 Web 套接字 (ws://) 相關(guān)的庫(kù)。它實(shí)現(xiàn)了所有基本的 websocket 功能以及一些額外功能。

您的 Java 代碼擁有的是 TCP 套接字服務(wù)器。雖然 websockets 和 socket.io 是基于 TCP 套接字構(gòu)建的,但您無(wú)法將 socket.io 客戶端連接到“裸”套接字服務(wù)器。

解決方案:如果您從網(wǎng)絡(luò)瀏覽器運(yùn)行 javascript,那么您僅限于 websocket,這意味著您要將 java 代碼更改為 websocket 服務(wù)器。您可以在網(wǎng)上找到該庫(kù)。


查看完整回答
反對(duì) 回復(fù) 2023-07-28
?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

使用ws://...而不是http://....

詳細(xì)信息: https用于HTTP協(xié)議。在這種情況下,瀏覽器首先詢問(wèn)服務(wù)器是否允許 CORS 是正確的。您尚未啟用 CORS。這就是為什么瀏覽器拒絕發(fā)送CORS請(qǐng)求是正常的。

但你說(shuō)你想使用 Web Sockets。那么你應(yīng)該使用ws://,而不是http://。對(duì)于 Web 套接字,沒(méi)有 CORS 策略,瀏覽器將在沒(méi)有 CORS 限制的情況下發(fā)送您的請(qǐng)求。


查看完整回答
反對(duì) 回復(fù) 2023-07-28
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)