精华内容
下载资源
问答
  • 简单的socket服务器,client 浏览器访问
  • import socket import re import multiprocessing def service_client(client_socket): data = client_socket.recv(1024) recv_data=data.decode(utf-8) print(recv_data) #GET /index.html HTTP/1.1 ret=re....
  • 我们用过许多web服务器(Tomcat,Apache,WebLogic…)其实他们是功能很强大的socket服务,当我们在浏览器地址栏输入对应的IP地址,其实也就是浏览器创建了一个socket连接。那么服务端能否响应一段文字呢? 实现...

    前言

    我们用过许多web服务器(Tomcat,Apache,WebLogic…)其实他们是功能很强大的socket服务,当我们在浏览器地址栏输入对应的IP地址,其实也就是浏览器创建了一个socket连接。那么服务端能否响应一段文字呢?


    实现的功能

    在浏览器地址栏输入:http://localhost:8888/index.html返回对应页面,如果没有就返回404,服务端用java编写的ServerSocket完成,并获取浏览器请求的内容。通过流,根据请求的路径,读取相应的html文件,并返回给浏览器。
    这里写图片描述
    这里写图片描述
    这里写图片描述这里写图片描述


    实现代码

    package com.test;
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    /**
     * @Author: cxx
     * @Date: 2018/6/20 15:20
     */
    public class ServerTest {
        private static int port = 8888;
        private static Socket accept;
        private static ServerSocket socket;
        private static BufferedWriter bw;
        public static void main(String[] args) throws Exception {
            socket = new ServerSocket(port);
            System.out.println("服务器开启,等待连接....");
            while (true){
                accept = socket.accept();
                InputStreamReader r = new InputStreamReader(accept.getInputStream());
                System.out.println("浏览器请求成功!");
                BufferedReader br = new BufferedReader(r);
                String readLine = br.readLine();
                System.out.println("---------------------");
                //打印请求消息
                String filePath="log";
                int i=0;
                while(readLine != null && !readLine.equals("")){
                    System.out.println(readLine);
                    if (i==0){
                        String[] split = readLine.split(" ");
                        if (split[1].endsWith("html")) {
                            filePath += split[1];
                        }
                    }
                    i++;
                    readLine=br.readLine();
                }
                System.out.println("----------------------");
                //发送响应请求
                System.out.println(filePath);
                writeHtml(filePath);
            }
        }
    
        public static void writeHtml(String filePath) throws Exception{
            if (!"log/index.html".equals(filePath)){
                filePath="log/404.html";
            }
            FileInputStream fis = new FileInputStream(filePath);
            int len=0;
            byte[] b = new byte[1024];
            StringBuilder sb = new StringBuilder();
            //拼装http响应的数据格式
            sb.append("http/1.1 200 ok").append("\n\n");
            while ((len=fis.read(b))!=-1){
                sb.append(new String(b,0,len));
            }
            bw = new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));
            bw.write(sb.toString());
            bw.flush();
            bw.close();
        }
    }
    

    注意

    浏览器每次发起请求,都会同时请求一次favicon.ico(本次不讨论浏览器缓存了favicon.ico)。

    浏览器请求成功!
    ---------------------
    GET /index.html HTTP/1.1
    Host: localhost:8888
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    ----------------------
    log/index.html
    浏览器请求成功!
    ---------------------
    GET /favicon.ico HTTP/1.1
    Host: localhost:8888
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36
    Accept: image/webp,image/apng,image/*,*/*;q=0.8
    Referer: http://localhost:8888/index.html
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    ----------------------
    log
    浏览器请求成功!
    展开全文
  • 尝试 --浏览器访问socket

    千次阅读 2018-01-31 13:56:51
    浏览器跟服务器的通信 ...就想,既然bs架构中浏览器其实是充当了客户端,那么能不能把浏览器当做客户端实现socket通信? 毕竟tomcat其实就是功能做的也就是一个复杂一点的服务。。 经过实践发现还真可以

    浏览器跟服务器的通信

    最近看了不少socket通信的文章。什么BIO,NIO,AIO….
    于是就想来个实践,一般的的demo 都是写个server,再写个client
    但是,毕竟lz干的是烂大街的web开发
    就想,既然bs架构中浏览器其实是充当了客户端,那么能不能把浏览器当做客户端实现socket通信?
    毕竟tomcat其实就是功能做的也就是一个复杂一点的服务。。
    经过实践发现还真可以,不过要通过http协议。。
    (此文参考让浏览器可以访问我们的socket服务 (http协议入门)

    客户端响应

    浏览器创建连接时,让服务端响应一段文字
    创建Request类处理http的请求

    package HttpSocket;
    
    /**
     * Created by zhang on 2018/1/30.
     */
    
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * 接受HTTP请求
     */
    public class Request {
        // 用来保存输入流对象
        private InputStream inputStream;
        // 从输入流中每次读取的字节长度
        private int bufferLength = 1024;
    
        /**
         * 构造函数
         * @param inputStream
         */
        public Request(InputStream inputStream) {
            this.inputStream = inputStream;
        }
    
        /**
         * 读取内容 返回字符串
         * @return
         * @throws IOException
         */
        public String readHtml() throws IOException {
            BufferedInputStream bufferedInputStream = new BufferedInputStream(this.inputStream);
            byte[] buffer = new byte[this.bufferLength];
            StringBuilder stringBuilder = new StringBuilder();
            int len = 0;
            while (true){
                len = bufferedInputStream.read(buffer);
                stringBuilder.append(new String(buffer,0,len));
                if (len <= 0 || len<this.bufferLength){
                    break;
                }
            }
            return stringBuilder.toString();
        }
    }
    

    类中有两个方法,一个用来接受输入流对象,另一个用来读取内容。

    socket服务端

    package HttpSocket;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by zhang on 2018/1/30.
     */
    public class MainServer {
        public static void main(String[] args) throws IOException {
            // 服务端创建一个监听
            ServerSocket serverSocket = new ServerSocket(9000);
            // 监听客户端连接,方便起见不用多线程
            Socket socket = serverSocket.accept();
    
            // 要想获取客户端发送过来的内容,就要得到 InputStream类 的输入流对象
            InputStream inputStream = socket.getInputStream();
    
            //==========使用自定义的http处理的相关类===========//
            Request request = new Request(inputStream);
            System.out.println(request.readHtml());
            socket.close();
        }
    }
    

    运行socket服务端,然后浏览器访问http://localhost:9000
    Request对象 读取到的内容 会在控制台打印

    "C:\Program Files\Java\jdk1.8.0_73\bin\java" "-javaagent:C:\Program Files\idea\lib\idea_rt.jar=55530:C:\Program Files\idea\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_73\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_73\jre\lib\rt.jar;E:\product\zhang123\Excercise\target\classes;E:\JavaWork\mvn\junit\junit\4.12\junit-4.12.jar;E:\JavaWork\mvn\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" HttpSocket.MainServer
    GET / HTTP/1.1
    Host: localhost:9000
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
    Upgrade-Insecure-Requests: 1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: ims_language=en
    
    
    
    Process finished with exit code 0

    这就是一个http请求

    给浏览器响应内容

    package HttpSocket;
    
    import java.io.BufferedOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    /**
     * Created by zhang on 2018/1/30.
     */
    public class Response {
    
        private OutputStream outputStream;
    
        public Response(OutputStream outputStream){
            this.outputStream = outputStream;
        }
        public void writeHtml(String html) throws IOException {
            html = "http/1.1 200 ok\n"
                    +"\n\n"
                    +html;
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(this.outputStream);
            bufferedOutputStream.write(html.getBytes());
            bufferedOutputStream.close();
        }
    
    }
    

    在writeHtml()方法中,拼装一个符合http协议响应格式的字符串(这个也不全,http协议的东西挺繁杂,但有这个头就能识别,不然内容不会被浏览器解析识别)。

    package HttpSocket;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by zhang on 2018/1/30.
     */
    public class MyServer {
        public static void main(String[] args) throws IOException {
            // 服务端创建一个监听
            ServerSocket serverSocket = new ServerSocket(9000);
            // 监听客户端连接,暂时不用多线程
            Socket socket = serverSocket.accept();
    
            // 获取客户端发送过来的内容,得到 InputStream类 的输入流对象
            InputStream inputStream = socket.getInputStream();
    
            //==========使用自定义的http处理的相关类===========//
            Request request = new Request(inputStream);
            System.out.println(request.readHtml());
    
            // 给客户端发送数据,就要得到
            OutputStream outputStream = socket.getOutputStream();
            Response response = new Response(outputStream);
            response.writeHtml("this is my server");
    
            // 关闭
            inputStream.close();
            outputStream.close();
            socket.close();
        }
    }
    

    socket服务端代码,向客户端输出了z字符串“this is my server”
    运行这个服务端,再访问http://localhost:9000
    页面上就会显示字符串

    展开全文
  • 其实要实现一个浏览器能够访问服务还是很简单的,首先需要了解一下HTTP协议的格式,然后只需要按照格式要求读取和发送数据就可以了。 完整代码请到这里获取...

    其实要实现一个浏览器能够访问的服务还是很简单的,首先需要了解一下HTTP协议的格式,然后只需要按照格式要求读取和发送数据就可以了。

    完整代码请到这里获取https://github.com/godelgnisEJW/HttpServer/tree/master/HttpServer

    主要实现了这两个功能

    以下是效果图

    直接登录

    重定向

    登陆成功

    post请求的数据也可以在控制台打印出来

    再设计一个404页面

     

    展开全文
  • 其实它们就是功能做的很强大的socket服务。 我们使用的数据库程序,包括一些和网络相关的软件都和我们的socket是有关系的。 这中间产生的交互,很可能是通过某种协议来完成的。 只不过有些协议好理解(http协议),...
    在我们的web开发中,会是用到web服务器,比如:tomcat、apache等。
    其实它们就是功能做的很强大的socket服务。
    我们使用的数据库程序,包括一些和网络相关的软件都和我们的socket是有关系的。
    这中间产生的交互,很可能是通过某种协议来完成的。
    只不过有些协议好理解(http协议),有些软件专有的协议可能不太好理解。

    当我们在浏览器地址栏输入对应的IP地址,其实也就是浏览器创建了一个socket连接。那么服务端能否响应一段文字呢?

    1、我们先来创建一个Request类,用于处于http的请求。
    Request.java:

    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    
    /**
     * http请求 接收类
     */
    public class Request {
    
        // 用来保存输入流对象
        private InputStream inputStream;
        // 从输入流中每次读取的字节长度
        private int bufferLength = 1024;
    
        /**
         * 构造函数
         * @param inputStream 输入流对象
         */
        public Request(InputStream inputStream){
            this.inputStream = inputStream;
        }
    
        /**
         * 读取内容
         * @return 返回的是字符串
         * @throws IOException
         */
        public String readHtml() throws IOException {
            // 使用BufferedInputStream对象来读取
            BufferedInputStream bufferedInputStream = new BufferedInputStream(this.inputStream);
            // 每次读取1024字节
            byte[] buffer = new byte[this.bufferLength];
    
            // 字符串拼接对象
            StringBuilder stringBuilder = new StringBuilder();
            int length = 0;
            while (true){
    
                length = bufferedInputStream.read(buffer);
    
                // 把读取的字节转为String类型
                // 然后拼接成一个大的字符串
                stringBuilder.append(new String(buffer,0,length));
    
                if (length<=0 || length<this.bufferLength){
                    break; // 如果没有读取到内容就跳出循环
                }
    
    
            }
    
            // 返回字符串内容
            return stringBuilder.toString();
        }
    }

    这个Request类有2个方法:构造方法接受一个InputStream对象(socket中的输入流对象),readHtml()方法是用来读去到底浏览器给我们发送了什么内容(从inputStream对象中获取内容)。

    2、然后我们就可以在socket服务端使用Request类
    MyServer.java:

        public static void main(String[] args) throws IOException {
            // 服务端创建一个监听
            ServerSocket serverSocket = new ServerSocket(9000);
            // 监听客户端连接,这里我们暂时没有多线程
            Socket socket = serverSocket.accept();
    
            // 要想获取客户端发送过来的内容,就要得到 InputStream类 的输入流对象
            InputStream inputStream = socket.getInputStream();
    
            //==========使用我们自定义的http处理的相关类===========//
            Request request = new Request(inputStream);
            System.out.println(request.readHtml());
    
            socket.close();
        }

    3、运行MyServer.java,也就是运行socket服务端。然后浏览器访问http://localhost:9000
    我们在服务端打印了Request对象读取到的内容,我们可以在控制台看见:

    GET / HTTP/1.1
    Host: localhost:9000
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Upgrade-Insecure-Requests: 1
    Cookie: Webstorm-b70439c5=403d1adc-2a8d-41c9-936a-1bf77c1ee41f
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    Connection: keep-alive

    这就是一个http发送请求的数据。

    4、服务端能够获取到浏览器的输入了,我们尝试给浏览器一个响应,比如响应一个字符串this is server
    我创建一个http响应类Response.java

    
    import java.io.BufferedOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    public class Response {
    
        private OutputStream outputStream;
    
        public Response(OutputStream outputStream){
            this.outputStream = outputStream;
        }
    
        public void writeHtml(String html) throws IOException{
            // 拼装http响应的数据格式
            html = "http/1.1 200 ok\n"
                    +"\n\n"
                    +html;
    
    
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(this.outputStream);
            bufferedOutputStream.write(html.getBytes());
            bufferedOutputStream.close();
        }
    
    }

    可以看出writeHtml()方法中,拼装了一个符合http协议响应格式的字符串(符合http协议才会被浏览器正常解析识别)。

    5、来到我们的socket服务端代码,现在既要处理输入也要处理输出了
    MyServer.java:

        public static void main(String[] args) throws IOException {
            // 服务端创建一个监听
            ServerSocket serverSocket = new ServerSocket(9000);
            // 监听客户端连接,这里我们暂时没有多线程
            Socket socket = serverSocket.accept();
    
            // 要想获取客户端发送过来的内容,就要得到 InputStream类 的输入流对象
            InputStream inputStream = socket.getInputStream();
    
            //==========使用我们自定义的http处理的相关类===========//
            Request request = new Request(inputStream);
            System.out.println(request.readHtml());
    
            // 要想给客户端发送数据,就要得到
            OutputStream outputStream = socket.getOutputStream();
            Response response = new Response(outputStream);
            response.writeHtml("this is server");
    
            // 关闭
            inputStream.close();
            outputStream.close();
            socket.close();
        }
    }

    现在浏览器访问http://localhost:9000的话,页上给我们显示this is server这样一个字符串了。

    展开全文
  • 在同一局域网内,手机(PC端)浏览器作为客户端,然后手机app里面通过socket服务代码,然后浏览器访问手机服务端访问网页和图片和css文件和下载APK 2 代码实现 创建服务线程代码 var serverSocket:...
  • # 以二进制形式打开图片 f = open(filename,'rb') # 响应头 responseHeaders="... responseHeaders += '\r\n' # 响应体 responseBody = f.read() # 整合,响应头编码为二进制 response = responseHeaders.encode()...
  • Socket模拟浏览器请求网页

    千次阅读 2019-04-13 12:06:45
    什么是socket? 简单讲,socket是对tcp进行封装...浏览器请求网页时,则是通过socket去连接服务器,使用http协议完成数据的传输。 环境搭建 可以使用正式的网站,也可以自己打一个网页服务器(xampp,Nginx,tomca...
  • 浏览器client访问服务器socket(c++)

    千次阅读 2015-06-04 17:22:32
    浏览器 js代码 socket服务器代码
  • 浏览器向与服务器端建立socket连接

    千次阅读 2019-02-21 20:33:57
    workerman workerman的客户端实现 js发送socket请求 浏览器访问服务器的wesocket服务 ws.onopen ws.onmessage ws.onclose ws.onerror
  • 浏览器访问服务器的过程 1/用户输入网址 2/浏览器请求DNS服务器,获取域名对应的IP地址(电脑连上网之后会被自动分配一个DNS服务器,域名跟ip是以键值对的形式存在DNS服务器,会按一定规则更新,) 3/请求...
  • 最近在阿里云买了一台轻量应用服务器,但在部署Tomcat启动服务之后,浏览器访问http://[公网IP]:8080时迟迟访问不到。于是我开始了漫长的调试之路。 正常情况 1.保证阿里云安全组开启了8080端口 2.保证Linux防火墙...
  • import socket import time urls = raw_input("Please enter a web address: \n> ") print "\nAccess web page start..." brushNum = 3600 for i in range(brushNum): url = urls socket.setdefaulttimeout req_...
  • socket 服务器 安卓端 通过浏览器访问服务器时时显示指定的文字怎么实现?
  • 基于Netty构建HTTP访问分为两类,使用浏览器访问的和使用Netty客户端访问。在介绍之前,先简单说一下如何使用Netty实现Http服务的。 Netty的Http服务的流程是: 1、Client向Server发送http请求。 2、Server端对...
  • # import socket def service_client(new_socket): # 为这个客户端返回数据,即http请求 # Get / HTTP/1.1 request = new_socket.recv(1024) print(request) # 2.返回http格式的数据,给浏览器 # 2.1准备发送给...
  • import socket import multiprocessing import re def service_client(new_socket): """为这个客户端返回数据""" # 接收浏览器发送过来的请求, 即http请求 # GET / HTTP/1.1 # .....
  • 浏览器中网址访问过程详解

    万次阅读 多人点赞 2017-09-02 14:21:55
    浏览器中网址访问过程详解前言当我们在浏览器中输入一个网址,比如www.google.cn,浏览器就会加载出百度的主页。那么浏览器背后完成的具体是怎么样的呢? 总结起来大概的流程是这样的: (1)浏览器本身是一个...
  • import socket def main(): sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sk.bind(("127.0.0.1",8000)) sk.listen(5) while True: ... conn,addr = sk.accept()...在浏览器输入 ip端口为啥 连接不到、
  • 浏览器输入URL访问服务器过程

    千次阅读 2015-04-08 19:50:23
    我们来看看在自己的浏览器中输入URL:www.sina.com.cn,连接都经历了哪些过程 域名解析DNS 域名是方便人们记忆的,不然那么多网站,人怎么可能记住所有的ip地址。 www.sina.com.cn这个是新浪的域名,在输入该域名...
  • Socket.io 表示 文件访问 API HTML5 音频和视频 Blob 网址 jQuery 移动版 Jade 模板引擎 指示 如果要在 localhost 中运行应用程序,请按照以下说明操作: 安装 Git 和 Node.JS,如果你还没有的话。 安装 Git 和...
  • 前言 最近有粉丝建议博主出一篇讲使用socket进行实际编程应用的帖子。这里博主就讲使用Python socket实现简单的网页服务器. ...这里我们先简单介绍下服务器是如何响应浏览器访问的: 1. 建立连接。 既然...
  • 因为网络间通信是基于TCP协议传输数据的,而服务器与浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个tcp服务器,浏览器可以基于http协议进行发送请求和解析。展示浏览器返回一个固定页面和HTML页面案例...
  • Java Socket编写一个简单的Web服务器 (1)、使用 ServerSocket 监听某一端口,然后等待连接获取 Socket对象; (2)、创建一个类 HttpServer 继承 java.lang.Thread 类,重写 run()方法,执行浏览器请求; (3)、...
  • 使用浏览器访问服务器端页面

    千次阅读 2019-08-07 15:52:26
    import java.io.*; import java.net.ServerSocket.../*使用浏览器访问我们服务器上的页面 * * 步骤: * 1.创建一个ServerSocket * 2.获取浏览器请求信息 * 3.对浏览器请求信息第一行进行截取(第一行就是文件地址) ...
  • 手把手教你利用爬虫爬网页(Python代码)

    万次阅读 多人点赞 2019-05-14 14:34:48
    问题出在请求中的头信息,服务器会检验请求头,来判断是否是来自浏览器访问,这也是反爬虫的常用手段。 1.2 请求头headers处理 将上面的例子改写一下,加上请求头信息,设置一下请求头中的User-Agent域和Referer域...
  • 利用socket多线程访问服务器文件

    千次阅读 2017-08-21 21:39:53
    直接上代码 ServerMain.javapackage ...import java.io.File; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;public class ServerMain { static boolean start =

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,336
精华内容 36,934
关键字:

本机socket服务浏览器访问