zoukankan      html  css  js  c++  java
  • Socket

    1.

     1 ServerSocket ss = new ServerSocket(port); 
     2   while(true){ //如果有客户端的连接请求,将执行下面的操作 
     3   Socket client = ss.accept(); //新建客户端对象 
     4   Handle handle = new Handle(client);//启动个客户端线程,并且一直监听,直到退出,若有多个客户端请求,则会新建多个客户端线程,由此实现多线程 
     5   } 
     6 
     7 
     8 public class Handle implements Runnable{ 
     9 Socket socket; 
    10 public Handle(Socket socket){ 
    11 this.socket = socket; 
    12 new Thread(this).start();   
    13 } 
    14 public void run(){ 
    15 try{ 
    16   BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
    17             writer.write("返回服务器处理的消息给客户端"); 
    18             writer.flush(); 
    19             writer.close();//关闭这个socket 
    20 
    21          } catch (Exception e){ 
    22 } 
    23 }

    2

    为了方便用户使用Socket进行通信,Java把Socket封装成了类。如果查看Socket类的源码,代码是比较长的。我们这里创建了一个Socket_来表示下它。

     1 public class Socket_ {
     2 
     3     public Socket_() {
     4     }
     5 
     6     public Socket_(Proxy proxy) {
     7     }
     8 
     9     public Socket_(SocketImpl impl) {
    10     }
    11 
    12     public Socket_(String host, int port) {
    13     }
    14 
    15     public Socket_(InetAddress addr, int port) {
    16     }
    17 
    18     public Socket_(String host, int port, InetAddress localAddr, int localPort) {
    19     }
    20 
    21     public Socket_(InetAddress addr, int port, InetAddress localAddr,
    22             int localPort) {
    23     }
    24 
    25     public InputStream getInputStream() {
    26         return null;
    27     }
    28 
    29     public OutputStream getOutputStream() {
    30         return null;
    31     }
    32 
    33 }

     这样我们可以对Socket类有了大致的了解,对于一般用户只要知道这个套接字能够连接到另一台计算机,并能够获取数据输入输出流着就足够了。

     1 import java.io.IOException;
     2 import java.io.InputStream;
     3 import java.net.Socket;
     4 import java.net.UnknownHostException;
     5 
     6 public class TestSocket {
     7 
     8     public static final int BUF_SIZE = 1024;
     9 
    10     public static void main(String[] args) {
    11         try {
    12             Socket socket = new Socket("localhost", 5000);
    13             InputStream input = socket.getInputStream();
    14 
    15             // 好了,接下来就是InputStream对象的事了
    16             // 就像以前介绍的那样,我们将获得大量的数据流
    17             // 哈哈,准备接收数据吧
    18             // 这次我们考虑InputStream流的read(byte[] b)方法
    19 
    20             byte[] buf = new byte[BUF_SIZE];
    21             int readCount = 0;
    22             while ((readCount = input.read(buf)) != 0) {
    23                 //处理数据buf
    24             }
    25 
    26         } catch (UnknownHostException e) {
    27             e.printStackTrace();
    28         } catch (IOException e) {
    29             e.printStackTrace();
    30         }
    31 
    32     }
    33 
    34 }
  • 相关阅读:
    IO模型
    Java NIO概述
    消息系统避免分布式事务
    JVM调优总结
    设计模式的六大原则
    Java 内存区域与内存溢出
    windows go安装
    ZooKeeper原理及使用
    再谈HashMap
    Html5 播放实时音频流
  • 原文地址:https://www.cnblogs.com/xuanyuanzhuo-blog/p/3984664.html
Copyright © 2011-2022 走看看