導航:首頁 > IDC知識 > javasocketweb伺服器

javasocketweb伺服器

發布時間:2020-11-07 05:39:33

1、如何讓java websocket服務端 支持wss

客戶端:
client

1
2
3
4
5
6
7

<!DOCTYPE html>
<html>
<body>
<h1>WebSocket</h1>
<script src="client.js"></script>
</body>
</html>

client.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

var ws = new WebSocket("ws://127.0.0.1:8080/");

ws.onopen = function() {
alert("Opened");
ws.send("I'm client");
};

ws.onmessage = function (evt) {
alert(evt.data);
};

ws.onclose = function() {
alert("Closed");
};

ws.onerror = function(err) {
alert("Error: " + err);
};

服務端可以用各種語言去實現,Java可以用Jetty,C#可以用SuperSocket,這里我舉例用Node.js,創建server.js:

var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 8080});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('received: %s', message);
});
ws.send('something');
});

運行方式:

1
2

npm install ws
node server.js

2、怎樣用java web和websocket實現網頁即時通訊

java 後台做 websocket 服務端。 頁面使用js的websocket客戶端 連接上 服務端 就能實時通信了。

3、JAVA用websocket實現伺服器向客戶端定時發送數據

你要把session傳給線程,不然線程不知道session是哪個。所以空指針,發消息的話,應該是服務端與客戶端,連接,然後發消息的。你線程中,new出來的websocket,沒有連接客戶端吧。

4、Java Web項目怎麼監聽socket請求?

不知道具體需求是什麼。如果用java web作為服務端,那可以在web項目啟動的時候,增加socket監聽服務。在web項目的listener增加啟動類。
或者乾脆使用如netty這樣的IO框架。

5、javaweb能完成socket通信嗎?

可以,在JSP或Servlet寫Socket連接代碼就可以,不過不建議這么做。如果控制不好很可能連累應用的穩定性。不知道是什麼應用場景,感覺不應該這么設計。

6、JavaWeb裡面裝Socket?

前端頁面也建議使用websocket來獲取這種實時的數據,反復ajax輪詢的形式除非頻率非常低,否則用戶量大了,伺服器承擔的壓力也會非常大。

websocket可以使用html的websocket 也可以使用第三方庫socket.io,想要了解的話可以參考響應的教程。

7、我用java的socket機制編了一個代理伺服器,客戶端已經與代理建立了連接,如何讓代理與web伺服器連接?

代理伺服器解析客戶端傳入的數據,得到伺服器ip和埠,然後創建與伺服器的連接。解析代碼如下:(這里只處理了socket v5的情況,Config的常量對應java.net.SocksConsts)

try {
// socket v5
// 4byte(5 2 0 2) @see java.net.SocksSocketImpl
int len = dis.read(buffer);
// reply client
dos.write(new byte[]{Config.PROTO_VERS, Config.NO_AUTH});
dos.flush();

// read
// PROTO_VERS(1byte)
// CONNECT(1byte)
// 0(1byte)
// DOMAIN_NAME/IPV4/IPV6(1byte)   DOMAIN_NAME(not consider now)
// addr(IPV4:4byte/IPV6:16byte)
// port>>8&0xff(1byte)
// port&0xff(1byte)
len = dis.read(buffer);
byte addrType = buffer[3];
byte[] applyData = null;

String serverIp = null;
int serverPort = 0;
if (addrType == Config.IPV4) {
serverIp = Util.bytes2ipv4(buffer, 4, 4);
serverPort = buffer[8] << 8 | buffer[9];
// set reply data
applyData = new byte[10];
applyData[1] = Config.REQUEST_OK;
applyData[3] = Config.IPV4;
for (int i = 4; i < 10; i++) {
// fill ip, port
applyData[i] = buffer[i];
}
} else if (addrType == Config.IPV6) {
serverIp = Util.bytes2ipv6(buffer, 4, 16);
serverPort = buffer[20] << 8 | buffer[21];
// set reply data
applyData = new byte[6];
applyData[1] = Config.REQUEST_OK;
applyData[3] = Config.IPV6;
applyData[4] = buffer[20];
applyData[5] = buffer[21];
}
// reply
dos.write(applyData);
dos.flush();

// connect the server
// serverIp是伺服器ip,serverPort是伺服器埠,用這兩個
// 創建與伺服器的socket連接
Socket socket = new Socket(serverIp, serverPort);
// 之後處理客戶端與伺服器的數據交互就用這個socket轉發就行了

// finally success!!!
} catch (Exception e) {
    e.printStackTrace();
}

8、java Socket編程實現的最簡單的多線程Web伺服器

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

public class Test {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(888);
while(true) {
Socket s = server.accept();
Processer p = new Processer(s);
Thread t = new Thread(p);
t.start();
}
}
}

class Processer implements Runnable {
private Socket socket;

public Processer(Socket s) {
// TODO Auto-generated constructor stub
this.socket = s;
}
@Override
public void run() {
try {
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
out.println("HTTP/1.0 200 OK");
out.println("Content-Type:text/html;charset=utf-8");
out.println();
out.println("<h1> Web伺服器測試成功!</h1>");
out.close();
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}
}

9、編寫代碼,使用java ServerSocket創建伺服器端ServerSocket的過程。

伺服器端代碼:

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

public class Server {

    public void server(){
        try {
            ServerSocket serverSocket = new ServerSocket(8888); //建立伺服器端的套接字,並監聽8888埠

            Socket socket = serverSocket.accept(); //如果有請求到達,則接受請求,並建立一個新的套接字
            InputStream is = socket.getInputStream(); //獲取此套接字上的輸入流,用於接收消息

            //接下來就是獲取套接字里的位元組流,並轉化為字元串
            byte[] bytes = new byte[1024];
            int count;
            StringBuilder sb = new StringBuilder();
            while((count = is.read(bytes)) != -1){
                sb.append(new String(bytes, 0, count));
            }

            is.close();
            System.out.println(sb.toString());

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        Server s = new Server();
        s.server();
    }

}

另附客戶端:

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

public class Client {
    public void client(){
        try {
            Socket socket = new Socket(); //建立套接字
            socket.connect(new InetSocketAddress("127.0.0.1", 8888)); //連接到指定IP地址的主機,並指定埠號接收消息

            OutputStream os = socket.getOutputStream(); //獲取此連接上的輸出流,用於發送數據
            os.write(new String("Hello, world!").getBytes()); //將字元串轉化為位元組數組寫入輸出流
            os.flush();//刷新此輸出流,將位元組流寫入它們預期的目標
            os.close(); //關閉連接,否則會報連接重置異常
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Client c = new Client();
        c.client();
    }
}

10、java怎麼實現與websocket伺服器的通信

websocket伺服器的通信可以用tomcat-api來實現的, 以前做過一個簡單的推送示例,2227421573幫你寫好

與javasocketweb伺服器相關的知識