zoukankan      html  css  js  c++  java
  • Socket

    一、TCP

    • 服务器实例化一个ServerSocket对象,表示通过服务器上的端口通信。
    • 服务器调用 ServerSocket类 的accept()方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。
    • 服务器正在等待时,一个客户端实例化一个Socket对象,指定服务器名称和端口号来请求连接。
    • Socket类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个Socket对象能够与服务器进行通信。
    • 在服务器端,accept()方法返回服务器上一个新的socket引用,该socket连接到客户端的socket。

    Example:

    Server:

    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class JavaNet_SocketSever {
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
                ServerSocket ss=new ServerSocket(10003);
                Socket s=ss.accept();
                InputStream in=s.getInputStream();
                byte[] bt=new byte[1024];
                int len=in.read(bt);
                System.out.println(new String(bt,0,len));
                s.close();
                ss.close();
                }
    }

    Client:

    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;
    public class JavaNet_SocketClient {
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws  IOException {
            // TODO Auto-generated method stub
            Socket s =new Socket("255.255.255.255", 10003);
            OutputStream out=s.getOutputStream();
            out.write("hello".getBytes());
            s.close();
        }
    }

     扩展:

    java.io下面有两个抽象类:InputStream和Reader
    InputStream是表示字节输入流的所有类的超类
    Reader是用于读取字符流的抽象类
    InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。
    即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。

    So:

            OutputStream out=s.getOutputStream();
            out.write("hello".getBytes());    
  • 相关阅读:
    Win7电脑无法安全删除硬件并弹出媒体的解决方法
    Linux环境变量及其设置
    Linux环境变量文件environment, profile, bashrc含义
    Linux下设置和查看环境变量
    [Android Traffic] 让android应用在传输网络数据的时候更省电
    [Android Traffic] 看无线电波如何影响网络操作]
    [Android Pro] Android的5个进程等级
    [编码解码] Base64 编码换行和+号遍空格的处理
    [Android Traffic] Android网络开启、关闭整理
    [Android Traffic] android 流量计算方法
  • 原文地址:https://www.cnblogs.com/weiwoduhigh/p/3557307.html
Copyright © 2011-2022 走看看