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

网站引量方法百度云网盘下载

网站引量方法,百度云网盘下载,宽城区建设局网站,怎样建设一个游戏网站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.hkea.cn/news/412498/

相关文章:

  • 北京婚恋网站哪家最好企业推广宣传方式
  • 国发网站建设西安做网站公司
  • 网站推广服务合同简述网络营销的主要方法
  • 信息门户网站是什么成人计算机培训机构哪个最好
  • 网站建设公司 中企动力公司东莞商城网站建设
  • b2c的电子商务网站自己想做个网站怎么做
  • 京东pc网站用什么做的如何注册网站怎么注册
  • 长沙商城网站制作seo线下培训课程
  • web网站开发公司网站制作优化排名
  • 这么做3d网站企业邮箱网页版
  • 瑞安网站建设公司关键词排名网络推广
  • 南京学做网站友情链接检查工具
  • 参考文献网站开发百度重庆营销中心
  • 如何做微信ppt模板下载网站企业网页设计公司
  • 做b2b网站百度点击快速排名
  • 网站怎么做移动图片不显示不出来吗芭嘞seo
  • 旅游网站建设服务器ip域名解析
  • 企业网站建设三个原则百度指数资讯指数是指什么
  • 房地产集团网站建设方案软文文案案例
  • 阜蒙县建设学校网站是什么北京seo编辑
  • 珠海建设局网站十大经典事件营销案例分析
  • 创建网站开发公司互联网推广引流是做什么的
  • 万盛集团网站建设seo网站推广全程实例
  • 做教育的网站需要资质吗网站怎么开发
  • 微网站怎么做滚动中国万网域名注册官网
  • 个人如何免费建网站seo在线优化工具 si
  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化