当前位置: 首页 > news >正文

网站和app的区别东莞网站推广的公司

网站和app的区别,东莞网站推广的公司,省建设厅网站合同备案用户名,管理网站制作4.2.4 可中断套接字 SocketChannel可以中断套接字 SocketChannel channel.open(new InetSocketAddress(host,port)); 通道(channel)并没有与之相关联的流,实际上,所拥有的read和write方法都是通过Buffer对象实现的。 如果不想处理缓冲区,…

4.2.4 可中断套接字

SocketChannel可以中断套接字

SocketChannel channel.open(new InetSocketAddress(host,port));

通道(channel)并没有与之相关联的流,实际上,所拥有的read和write方法都是通过Buffer对象实现的。

如果不想处理缓冲区,可以使用Scanner从SocketChannel中读取信息。

Scanner有一个带ReadableByteChannel参数的构造器。

var in = new Scanner(channel,StandardCharsets.UTF-8);

通过调用静态方法Channels.newOutputStream,可以将通道转换成输出流。

OutputStream outStream = Channels.newOutputStream(channel);

对比中断套接字和阻塞套接字
package 第4章网络.interruptible;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class InterruptibleSocketTest {public static void main(String[] args) {var frame = new InterruptibleSocketFrame();frame.setTitle("InterruptibleSocketTest");
//        frame.setSize(400, 400);//初始打开为屏幕中央Toolkit toolkit = Toolkit.getDefaultToolkit();Dimension screenSize = toolkit.getScreenSize();int screenWidth = (int) screenSize.getWidth();int screenHeight = (int) screenSize.getHeight();//计算窗口位置int x = (screenWidth - frame.getWidth())/2;int y = (screenHeight - frame.getHeight())/2;frame.setLocation(x, y);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}
class InterruptibleSocketFrame extends JFrame {private Scanner in;private JButton interruptibleButton;private JButton blockingButton;private JButton cancelButton;private JTextArea messages;private TestServer server;private Thread connectThread;public InterruptibleSocketFrame() throws HeadlessException {var northPanel = new JPanel();add(northPanel,BorderLayout.NORTH);final int TEXT_ROWS = 20;final int TEXT_COLUMNS = 60;messages = new JTextArea(TEXT_ROWS, TEXT_COLUMNS);add(new JScrollPane(messages));interruptibleButton = new JButton("可中断");blockingButton = new JButton("阻塞中");northPanel.add(interruptibleButton);northPanel.add(blockingButton);interruptibleButton.addActionListener(e -> {interruptibleButton.setEnabled(false);blockingButton.setEnabled(false);cancelButton.setEnabled(true);connectThread = new Thread(() -> {try {connectInterruptibly();} catch (IOException e1) {messages.append("\nInterruptibleSocketTest.connectInterruptibly: "+e);}});connectThread.start();});blockingButton.addActionListener(e -> {interruptibleButton.setEnabled(false);blockingButton.setEnabled(false);cancelButton.setEnabled(true);connectThread = new Thread(() -> {try {connectBlocking();} catch (IOException e1) {messages.append("\nInterruptibleSocketTest.connectBlocking: "+e);}});connectThread.start();});cancelButton = new JButton("取消");cancelButton.setEnabled(false);northPanel.add(cancelButton);cancelButton.addActionListener(e -> {connectThread.interrupt();cancelButton.setEnabled(false);});server = new TestServer();new Thread(server).start();pack();}//连接测试服务器,用可中断IOpublic void connectInterruptibly() throws IOException {messages.append("可中断:\n");try (SocketChannel channel = SocketChannel.open(new InetSocketAddress("localhost",8189))){in = new Scanner(channel,StandardCharsets.UTF_8);while(!Thread.currentThread().isInterrupted()) {messages.append("读取 ");if(in.hasNextLine()) {String line = in.nextLine();messages.append(line);messages.append("\n");}}} finally {EventQueue.invokeLater(() -> {messages.append("管道关闭\n");interruptibleButton.setEnabled(true);blockingButton.setEnabled(true);});}}//连接测试服务器,用阻塞IOpublic void connectBlocking() throws UnknownHostException, IOException {messages.append("阻塞中:\n");try (var sock = new Socket("localhost",8189)){in = new Scanner(sock.getInputStream(),StandardCharsets.UTF_8);while(!Thread.currentThread().isInterrupted()) {messages.append("读取 ");if (in.hasNextLine()) {String line = in.nextLine();messages.append(line);messages.append("\n");}}} finally {EventQueue.invokeLater(() -> {messages.append("套接字关闭\n");interruptibleButton.setEnabled(true);blockingButton.setEnabled(true);});}}class TestServer implements Runnable {@Overridepublic void run() {try(var s = new ServerSocket(8189)){while (true) {Socket incoming = s.accept();Runnable r = new TestServerHandler(incoming);new Thread(r).start();}} catch (IOException e) {messages.append("\nTestServer.run: "+e);}}}class TestServerHandler implements Runnable{private Socket incoming;private int counter;public TestServerHandler(Socket incoming) {super();this.incoming = incoming;}@Overridepublic void run() {OutputStream outStream;try {try {outStream = incoming.getOutputStream();var out = new PrintWriter(new OutputStreamWriter(outStream, StandardCharsets.UTF_8),true);while(counter < 100) {counter++;if(counter<=10) out.println(counter);Thread.sleep(100);}}finally {incoming.close();messages.append("关闭服务\n");}} catch (Exception e) {messages.append("\nTestServerHandler.run:"+e);}}}
}

http://www.hengruixuexiao.com/news/31456.html

相关文章:

  • 有没有网站找人帮忙做图百度一下 你就知道首页
  • 网站被快照被劫持wordpress国际机票搜索量大涨
  • 建网站一定要备案吗友情链接的作用
  • 成都网站建设公司推荐长沙网站seo优化排名
  • 建网站的目的广告主资源哪里找
  • 微信小程序推送消息给用户seo怎么优化
  • 外围网站做代理软文广告经典案例300大全
  • 企业网站改版计划书深圳外贸网站制作
  • 天津建设网站公司百度网盘资源搜索引擎搜索
  • 佛山网站建设怎样做seo优化个人博客
  • 帮做暑假作业网站seo公司 上海
  • dreawever如何做本地网站济南百度竞价开户
  • 高端做网站公司网络营销推广方案前言
  • 网站建设合同2018百度百科搜索入口
  • 彩票网站用什么软件做商丘seo推广
  • wordpress域名搬家优化内容
  • 素质课网站设计与建设百度天眼查公司
  • 母婴网站设计分析谷歌seo优化
  • dede cms 网站模板百度最新版app下载安装
  • 网站开发遇到的问题完整的社群营销方案
  • 綦江网站建设公司学网络运营在哪里学比较好
  • 网站建设报价明细怎么注册一个网站
  • 张店网站设计百度竞价查询
  • 国内知名商业设计公司关键词优化是什么
  • 做设计一般用的素材网站是什么建网站需要什么
  • 国内广告公司排行重庆seo技术教程
  • 做网站婚介简历怎么写seo包括哪些方面
  • 织梦网站日志seo案例分析
  • 三亚网吧多少钱一个小时重庆seo管理平台
  • 设计网站页面要多少钱南宁百度seo排名价格