如何在jsp中实现客户端和服务器代码
问题描述:
我在Java SE
中有一个用于Desktop
的小型聊天应用程序,我也想在Web
中实现相同的功能,我在ChatServer
中具有以下功能:
I have a small chatting App in Java SE
for Desktop
, I want to implement the same for Web
as well, I have ChatServer
as :
public class ChatServer extends Thread {
public static final int DEFAULT_PORT = 6035;
public static String initServer() {
String msg = "";
int port = DEFAULT_PORT;
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(port);
msg = "Listening on port " + port;
while (true) {
socket = serverSocket.accept();
/*System.out.println("Connection receive from "
+ socket.getRemoteSocketAddress());*/
ChatHandler handler = new ChatHandler(socket);
handler.start();
}
} catch (IOException ioe) {
System.err.println("Usage: java ChatServer [port]");
System.err.println("Where options include:");
System.err.println("\tport the port on which to listen.");
msg = "Usage: java ChatServer [port]";
System.exit(0);
} finally {
try {
serverSocket.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
return msg;
}
}
现在可以在index.jsp
中调用它,我有:
Now to call this in index.jsp
, I have :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><%=pkj.com.lenvel.ChatServer.initServer() %></h1>
</body>
</html>
上面的代码没有显示任何消息,我仍然很困惑,在哪里实现Client
的代码?
the above code is not showing any message and I'm still confused, where to implement code for Client
?
答
尝试一下
服务器(YourServer.java)
Server (YourServer.java)
import java.io.*;
import java.net.*;
public class YourServer
{
public static void main(String[] args )
{
try {
ServerSocket socket = new ServerSocket(8765);
Socket insocket = socket.accept( );
BufferedReader in = new BufferedReader (new
InputStreamReader(insocket.getInputStream()));
PrintWriter out = new PrintWriter (insocket.getOutputStream(),
true);
String instring = in.readLine();
out.println("The server got this: " + instring);
insocket.close();
}
catch (Exception e) {}
}
}
Client.Jsp
<%@ page import="java.io.*, java.net.*" %>
<HTML>
<HEAD>
<TITLE>Creating Client/Server Applications</TITLE>
</HEAD>
<BODY>
<H1>Creating Client/Server Applications</H1>
<%
try{
int character;
Socket socket = new Socket("127.0.0.1", 8765);
InputStream inSocket = socket.getInputStream();
OutputStream outSocket = socket.getOutputStream();
String str = "Hello!\n";
byte buffer[] = str.getBytes();
outSocket.write(buffer);
while ((character = inSocket.read()) != -1) {
out.print((char) character);
}
socket.close();
}
catch(java.net.ConnectException e){
%>
You must first start the server application
(YourServer.java) at the command prompt.
<%
}
%>
</BODY>
</HTML>