socket返回到数据如何传送到前端html页面

fangsky 2019-07-19 10:02:21
项目需求大概是:web客户端实现发送数据和接收服务端返回的数据。 服务端不用管。
1、前端递交通讯数据比如(ip,端口,登录账号),然后通过TCP通讯发送到服务器端
2、服务器端接收验证后,返回xml(或json)数据,然后把数据展示在前端html页面上。
login.html------>lwservlet.java-------->csocket.java------->服务器端

目前web客户端的流程大概是这样的:
1、login.html递交页面
login.html页面通过ajax post到lwservlet.java文件,通过servlet处理接收
$.ajax({
type: "post",
url: 'lwServlet',
//dataType:"json",
data: data,
error: function () {
alert("服务繁忙,请稍候重试");
},
success: function (result){
alert(result);
******接收返回的数据....******
}
{

2、lwservlet.java,用servlet的doPost接收,数据递交成功的。

request.setCharacterEncoding("UTF-8");//防止乱码
String loginip = request.getParameter("cip");
Integer loginport = Integer.parseInt(request.getParameter("cport").trim());
String loginacct = request.getParameter("acct");
String loginPwd = request.getParameter("Pwd");
//Client clientw = new Client(loginip,loginport); //socket递交
//clientw.start();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//out.print(loginip);//返回登录信息
//out.write(loginacct); //测试递交的账号返回,
out.write(服务端返回的数据); //测试递交的账号返回,
out.flush();
out.close();

3、csocket.java 通过TCP通讯发送数据到服务器端,服务器端然后返回数据。
目前我单独测试的时候,发送和接收数据都是成功的。

public class Client extends Thread {

//定义一个Socket对象
Socket socket = null;
ArrayList<Alarm> alarmArrayList = new ArrayList<>();

private String username="测试账号";
private String password="12345";
private static String cip="192.1.100.200"; //服务器IP
private static int cport=10222;

public Client(String host, int port) {
try {
//需要服务器的IP地址和端口号,才能获得正确的Socket对象
socket = new Socket(host, port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
...发送数据和接收服务器端数据....
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"gb2312"));
//获取要传送的xml文件字符串形式
LoginXMLToString xmlFile = new LoginXMLToString(username,password);
String xml = xmlFile.loginXMLToString();
InputStream inputStream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
System.out.println("发送通讯报文");    
String line;
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line +"\n");
System.out.println(line); //输出服务器端返回的数据,如何传给前端呢????
bufferedWriter.flush();
}


问题:
csocket.java接受的返回数据如何传送到前端html页面呢? 谢谢,刚开始学java,基本属于小白。
...全文
888 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
淡定的蜗牛 2019-07-24
  • 打赏
  • 举报
回复
引用 4 楼 fangsky 的回复:
[quote=引用 3 楼 淡定的蜗牛 的回复:] 用线程处理不行吧,你启动一个线程它是异步处理的,启动线程后还没等你线程处理完就直接返回了 解决方法: 1、如果处理任务不是特别耗时,直接在servlet中处理,处理后返回结果 2、如果比较耗时,可以采用websocket方式,服务端实时回传处理结果 --------------------- PS:如果觉得我的分享不错,欢迎大家随手点赞~ 我有一个微信公众号,经常会分享一些Java技术相关的干货;如果你喜欢我的分享,可以用微信搜索“Java知己”关注。发送“1024”可以领取30本经典开发书籍,发送“Group”可以加入Java微信群,与10万程序员一起进步。
java这个socket与websocket的区别在哪?[/quote] websocket是指前台js通过socket和后端java进行socket通信
fangsky 2019-07-24
  • 打赏
  • 举报
回复
引用 3 楼 淡定的蜗牛 的回复:
用线程处理不行吧,你启动一个线程它是异步处理的,启动线程后还没等你线程处理完就直接返回了 解决方法: 1、如果处理任务不是特别耗时,直接在servlet中处理,处理后返回结果 2、如果比较耗时,可以采用websocket方式,服务端实时回传处理结果 --------------------- PS:如果觉得我的分享不错,欢迎大家随手点赞~ 我有一个微信公众号,经常会分享一些Java技术相关的干货;如果你喜欢我的分享,可以用微信搜索“Java知己”关注。发送“1024”可以领取30本经典开发书籍,发送“Group”可以加入Java微信群,与10万程序员一起进步。
java这个socket与websocket的区别在哪?
淡定的蜗牛 2019-07-19
  • 打赏
  • 举报
回复
用线程处理不行吧,你启动一个线程它是异步处理的,启动线程后还没等你线程处理完就直接返回了 解决方法: 1、如果处理任务不是特别耗时,直接在servlet中处理,处理后返回结果 2、如果比较耗时,可以采用websocket方式,服务端实时回传处理结果 --------------------- PS:如果觉得我的分享不错,欢迎大家随手点赞~ 我有一个微信公众号,经常会分享一些Java技术相关的干货;如果你喜欢我的分享,可以用微信搜索“Java知己”关注。发送“1024”可以领取30本经典开发书籍,发送“Group”可以加入Java微信群,与10万程序员一起进步。
迷途的码农 2019-07-19
  • 打赏
  • 举报
回复
Client里面写个带返回的方法,然后后doPost 里面调用返回啊
  • 打赏
  • 举报
回复
把你在Client里接收到的数据,返回给lwservlet,然后lwservlet输出到页面,

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧