내 목표는 웹 소켓을 사용하여 자바 서버 소켓과 브라우저 사이의 연결을 설정하는 것이다. 지금까지는 연결이 작동하지만 데이터 스트림은 그렇지 않습니다. 서버 소켓에서 웹 소켓으로 String을 보내고 싶습니다.자바 서버 소켓 전송 문자열 웹 소켓
문제는 입력 스트림과 출력 스트림입니다. 웹 소켓은 "zustimmung"을 run()
에서 읽은 서버 소켓에 in.readLine()
으로 보냅니다. 그러나이 문자열을 읽지 않습니다, "GET/HTTP/1.1"읽습니다.
출력도 작동하지 않습니다 (필자는 writeUTF() 때문인 것으로 짐작합니다).
그럼 내 질문 : 웹 소켓과 서버 소켓 사이에서 문자열을 전송하는 데 사용할 수있는 데이터 스트림은 무엇입니까?
코드 서버 :
import java.net.*;
import java.io.*;
public class ServerCommunicator extends Thread{
private final static int PORT = 7777;
private static ServerSocket serverSocket;
private static Server server;
private Socket incoming;
private DataOutputStream out;
private DataInputStream in;
public static void main (String args[])
{
try {
serverSocket = new ServerSocket (PORT);
System.out.println("Waiting for Clients..");
server = new Server();
while (true) {
Socket incoming = serverSocket.accept();
ServerCommunicator communicator = new ServerCommunicator(incoming);
communicator.start();
}
}catch (Exception e) {e.printStackTrace();}
}
public ServerCommunicator (Socket incoming)
{
this.incoming = incoming;
try {
out = new DataOutputStream (incoming.getOutputStream());
in = new DataInputStream (incoming.getInputStream());
} catch (Exception e) {e.printStackTrace();}
}
public void run()
{
try {
String input = in.readLine();
String reply;
reply = server.auszaehlen(input); //returns a String
out.writeUTF(reply);
out.flush();
incoming.close();
} catch (Exception e) {e.printStackTrace();}
}
}
자바 스크립트 코드를 HTML은 :
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function WebSocketTest()
{
if ("WebSocket" in window)
{
alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://localhost:7777");
ws.onopen = function()
{
// Web Socket is connected, send data using send()
ws.send("zustimmung");
alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function()
{
// websocket is closed.
alert("Connection is closed...");
};
}
else
{
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>
좋습니다. 많이 고마워! 루프를 어떻게 설정합니까? 그리고 String을 웹 소켓으로 다시 보내려면 어떻게해야합니까? – user3590787
루프가 분명합니다. 죄송합니다. 나머지 질문 : 문자열을 다시 보내는 방법? ;) – user3590787