zoukankan      html  css  js  c++  java
  • Socket

    SOCKET

    TCP端口号,用来识别服务器上特定的应用程序 :0~1023 是通用端口 HTTP:80 FTP:20 smtp:25 telnet:23 pop3:110 time :37 1024~65536 可使用


    1.使用BufferedReader从Socket上读取数据

    //建立对服务器的Socket连接
    Socket socket = new Socket("127.0.0.1","5000");//建立对服务器的Socket连接//127.0.0.1 表示本机地址 应写服务器的地址

    //建立连接到Socket上底层输入串流的InputStreamReader 字节--->字符数据
    InputStreamReader stream = new InputStreamReader(socket.getInputStream());
    底层与高层串流件的桥梁 从Socket取得输入串流

    //建立BufferedReader来读取 字符数据--->缓存数据
    BufferedReader reader = new BufferedReader(stream);//BufferedReader链接到InputStreamReader
    String message = reader.readLine();

    reader.close();//关闭所有的串流

    2.使用PrintWriter写数据到Socket上

    //建立对服务器的Socket连接
    Socket socket = new Socket("127.0.0.1","5000");//建立对服务器的Socket连接//127.0.0.1 表示本机地址 应写服务器的地址

    //建立连接到Socket的 PrintWriter
    PrintWriter writer = new PrintWriter(socket.getOutputStream());//PrinterWriter 是字符数据和字节间的转换桥梁,可以链接String和Socket两端

    //写入数据
    writer.println("message to send");
    writer.print("another message");


    编写服务器应用程序需要:一对Socket
    1:等待用户请求的ServerSocket
    2:与用户通信用得Socket

    (1)服务器应用程序对特定端口创建出ServerSocket:
    ServerSocket serverSocket = new ServerSocket(4242);//这会让服务器开始监听来自4242端口的客户请求
    (2)客户端对服务器应用城区建立Socket链接
    Socket s = new Socket("172.0.0.1","4242");
    (3)服务器创建出与客户端通信的新Socket
    Socket s = serverSocket.accept();// acccpt()方法会在等待用户的 Socket连接,当用户发来Socket连接请求,
    //该方法会返回新的Socket(与ServerSocket端口不相同),因此 ServerSocket可空出来等待其他的用户。


    启动新的线程

    (1)建立Runable对象(线程的任务)
    Runnable threadJob = new MyRunnable();

    public class MyRunnable implements Runnable{
    public void run(){ go();};
    }

    (2)建立Thread对象(执行工人),并赋值Runnable(任务)
    Thread myThread = new Thread(threadJob);//新建状态

    (3)启动Thread
    myThread.start();//可执行状态----->执行中(只能靠JAVA虚拟机的线程调度机制来实现)


    线程的并发性问题:使用synchronized关键词来修饰方法使它每次只能被单一的线程存取
    synchronized是作用在java对象上的。

  • 相关阅读:
    导航守卫
    Java内部类详解
    requestAnimationFrame,Web中写动画的另一种选择
    requestAnimationFrame
    Linux下文件的打包、解压缩指令——tar,gzip,bzip2
    selenium的动作链 actionchains
    列表存储内存的两种形式
    使用timeit模块 测试两种方式生成列表的所用的时间
    selenium访问百度 然后获取百度logo的截图
    python 666
  • 原文地址:https://www.cnblogs.com/Rage-Leila/p/8735651.html
Copyright © 2011-2022 走看看