APK,ServerSocket练习

ServerSocket serversocket;

           try {
                ServerSocket serversocket = new ServerSocket(你监听的端口);
                Socket socket = serversocket.accept();
                while(true)
                {
                    InputStream inputStream = socket.getInputStream();
                    byte[] bb = new byte[1024];
                    int bbsize = inputStream.read(bb);
                    if(bbsize > 0)
                    {
                        Log.d(TAG, "run: wuxinke IP/Port:"+socket.getRemoteSocketAddress()+"内容:"+ new String(bb).trim()+"接收数据长度="+ bbsize + "Bytes");
                        OutputStream outputStream = socket.getOutputStream();
                        outputStream.write(bb);
                    }
                    try{
                        //睡眠
                        Thread.sleep(100);
                    }
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                }





//                serverSocket = new ServerSocket(SERVER_PORT);
//                Log.d(TAG, "run: wuxinke 等待远程连接,端口号为:"+serverSocket.getLocalPort()+"...");
//
//                Socket server = serverSocket.accept();
//                Log.d(TAG, "run: wuxinke 远程主机地址:"+server.getRemoteSocketAddress());
//                while(true) {
//                    InputStream inputStream = server.getInputStream();
//                    byte[] bb = new byte[1024];
//                    int bbSize = inputStream.read(bb);
//                    if (bbSize != -1) {
//                        Log.d(TAG, "recive msg wuxinke from" + server.getRemoteSocketAddress() + new String(bb).trim());
//                        OutputStream out = server.getOutputStream();
//                        out.write(bb);
//                    }
//                    try {
//                        Thread.sleep(100);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
            } catch (IOException e) {
                e.printStackTrace();

                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast toast = Toast.makeText(getApplicationContext(),
                                "监听端口失败,程序即将退出。", Toast.LENGTH_SHORT);
                        toast.show();
                    }
                });

                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        System.exit(1);
                    }
                }, 3000);
                return;
            }
 

 

ServerSocket是Java中用于创建服务器端的套接字。通过ServerSocket类,我们可以创建一个监听指定端口的服务器套接字,用于接受客户端的连接请求。 引用提到了创建ServerSocket实例时的一个选项setReuseAddress(true)。这个选项表示是否允许重新使用已被关闭的本地地址和端口。通过设置setReuseAddress(true),可以在服务器重启后更快地绑定到相同的地址和端口上。 引用也提到了setReuseAddress(true)方法,但是指出这个方法在使用构造函数创建ServerSocket实例时不起作用。实际上,setReuseAddress(true)方法只适用于已经创建的ServerSocket实例。因此,在构造函数中设置reuseAddress选项,需要使用带有两个参数的构造函数,第一个参数是端口号,第二个参数是指定等待队列的最大长度。 总结起来,如果想要在创建ServerSocket实例时设置reuseAddress选项,可以使用带有两个参数的构造函数: ServerSocket serverSocket = new ServerSocket(port,3); 其中,port是要监听的端口号,3是指定等待队列的最大长度。 参考资料: - https://www.jianshu.com/p/665994c2e784 - https://www.jianshu.com/p/665994c2e784<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SocketServerSocket的简单介绍及例子](https://blog.csdn.net/qq_41517936/article/details/81015711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值