导航:首页 > 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服务器相关的知识