TCP socket编程,推送消息


 1. socket client(客户端)
 		对接第三方公司需要向其推送消息,用到tcp通信,他们那边是服务端(server),将我们这边的客户端方法代码粘出来。

public static String SocketClient(String str) {
        String info="";
        try {
           // System.out.println("TCP开始---------------------");
            //创建Socket对象
            Socket socket=new Socket("ip",端口);

            //根据输入输出流和服务端连接
            //获取一个输出流,向服务端发送信息
            OutputStream outputStream=socket.getOutputStream();
            //将输出流包装成打印流
            PrintWriter printWriter=new PrintWriter(outputStream);
            printWriter.print(str);
            printWriter.flush();
            //关闭输出流
            socket.shutdownOutput();
            //获取一个输入流,接收服务端的信息
            InputStream inputStream=socket.getInputStream();
            //包装成字符流,提高效率
            InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
            //缓冲区
            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
            //临时变量
            String temp=null;
            while((temp=bufferedReader.readLine())!=null){
                info+=temp;
               // System.out.println("客户端接收服务端发送信息:"+info);
            }

            //关闭相对应的资源
            bufferedReader.close();
            inputStream.close();
            printWriter.close();
            outputStream.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //System.out.println("TCP结束---------------------"+info);
        return info;
    }
  1. 对方要调试,提出来要推送的时候每隔一秒钟推送一次,要是用MVC的定时任务太麻烦,而且是调试完不使用。搜了个线程的方式,粘出来。以后跟其他三方公司对接时,这种不合理的要求不要去帮他们搞,费时费力,还得等对面调好在注释掉
 Runnable doWork = new Runnable() {
                @Override
                public void run() {
               		 //调用上面socket方法
                   //SocketUtil.SocketClient(jsonNew);
              }
          };
//            // import java.util.concurrent.*;
           final ScheduledExecutorService scheduler = newScheduledThreadPool(1);
           final ScheduledFuture<?> doWorkHandle;
          doWorkHandle = scheduler.scheduleAtFixedRate(doWork, 0, 1, TimeUnit.MINUTES);

ps:tomcat里面运行的时候里面有线程,用 sh shutdown.sh 是关不掉的,要用kill命令。
参考,类似的博客,原来的那个找不到了,代码是复制的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket 是一种基于 TCP 的协议,用于实现客户端和服务器之间的双向通信。它允许服务器主动向客户端数据,包括音频文件流。 要使用 WebSocket 音频文件流,首先需要在服务器端建立一个 WebSocket 服务器,接受客户端的连接。客户端通过 WebSocket 连接到服务器后,可以发音频文件流给服务器,同时服务器也可以将音频文件流给客户端。以下是简单的实现步骤: 1. 建立 WebSocket 服务器:使用合适的编程语言和框架,如Node.js的socket.io库,建立一个 WebSocket 服务器。 2. 客户端连接:在客户端代码中,使用 WebSocket 客户端库连接到服务器。例如,可以使用JavaScript的WebSocket API创建一个 WebSocket 对象并连接到服务器。 3. 服务器端接收音频流:当客户端连接到服务器后,可以通过 WebSocket 对象发音频文件流给服务器。服务器端需要监听客户端发的数据,并处理音频文件流。 4. 服务器端音频流:服务器可以主动向连接的客户端音频文件流。根据具体需求,可以按照一定的规则或触发条件将音频流给客户端。 5. 客户端接收音频流:在客户端的 WebSocket 连接上监听服务器发的数据。当服务器音频文件流时,客户端接收并处理音频数据。 实现 WebSocket 音频文件流的关键是服务器和客户端之间的互相通信和数据处理。通过建立 WebSocket 连接,服务器可以实时地向客户端音频文件流,使得客户端能够即时收到并播放音频。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值