{"id":21974152,"url":"https://github.com/javaobjects/mytask","last_synced_at":"2025-10-17T06:33:07.498Z","repository":{"id":105562475,"uuid":"189910849","full_name":"javaobjects/myTask","owner":"javaobjects","description":"Java基础部分习题练习","archived":false,"fork":false,"pushed_at":"2019-08-02T00:58:02.000Z","size":2581,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-05T11:07:36.677Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javaobjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-03T00:48:42.000Z","updated_at":"2019-12-26T13:26:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"2ebb4827-ff16-4349-a338-68d44c7873cc","html_url":"https://github.com/javaobjects/myTask","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/javaobjects/myTask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2FmyTask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2FmyTask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2FmyTask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2FmyTask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javaobjects","download_url":"https://codeload.github.com/javaobjects/myTask/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2FmyTask/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267505099,"owners_count":24098346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T15:39:00.699Z","updated_at":"2025-10-17T06:33:02.459Z","avatar_url":"https://github.com/javaobjects.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java中级测试题五(2/2)\n\n1. 编写一服务器端程序，实现读取客户端发送过来的一组整数，表现为一组数与数之间用空格隔开的字符串。对这组整数进行排序处理后，返回相应的字符串给客户端，如果数据格式不正确，则返回错误信息，以本机作为服务器。\n\n#### Server.java\n```\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.io.OutputStreamWriter;\nimport java.io.PrintWriter;\nimport java.net.ServerSocket;\nimport java.net.Socket;\nimport java.util.Arrays;\n\npublic class Server {\n\n\tpublic static void charServer() {\n\t\t// 创建服务端套接字\n\t\tServerSocket server = null;\n\t\ttry {\n\t\t\tserver = new ServerSocket(50000);\n\t\t\t//获取客户端的套接字实例\n\t\t\tSocket client=server.accept();\n\t\t\tSystem.out.println(client);\n\t\t\t\n\t\t\ttry(\n\t\t\t\t\tBufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));\n\t\t\t\t\tPrintWriter pw=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true)\n\t\t\t\t\t\t\t)\n\t\t\t{\n\t\t\t\tString clientMessage=br.readLine();//接收客户端信息\n\t\t\t\t/**\n\t\t\t\t * 首先得判定数据格式是否正确\n\t\t\t\t * \n\t\t\t\t * 此处需要把这个String类型转换成int数组类型\n\t\t\t\t */\n\t\t\t\tSystem.out.println(\"client:\"+clientMessage);\n\t\t\t\tString[] strArray = clientMessage.split(\",\");//将String类型的数字转换成数组\n\t\t\t\tboolean bl = false;\n\t\t\t\ttry {\n\t\t\t\t\tfor(String i:strArray) {\n\t\t\t\t\t\tInteger.parseInt(i);\n\t\t\t\t\t}\n\t\t\t\t} catch (Exception e) {\n\t\t\t\t\tbl = true;\n\t\t\t\t\te.printStackTrace();\n\t\t\t\t}\n\t\t\t\tif(!bl) {\n\t\t\t\t\t//此处需要将数组转成字符串\n\t\t\t\t\tArrays.sort(strArray);\n\t\t\t\t\tString sortArrayMs = \"\";\n\t\t\t\t\tfor(String i:strArray) {\n\t\t\t\t\t\tSystem.out.println(i);\n\t\t\t\t\t\tsortArrayMs += i;\n\t\t\t\t\t}\n\t\t\t\t\tpw.println(sortArrayMs);\n\t\t\t\t}\n\t\t\t\t/* pw.flush(); */\n\t\t\t}catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\tpublic static void main(String[] args) {\n\t\tcharServer();\n\t}\n}\n```\n#### Client.java\n```\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.io.PrintWriter;\nimport java.net.Socket;\nimport java.net.SocketAddress;\n\npublic class Client {\n\n\tpublic static void charClient() {\n\t\t// 创建客户端套接字\n\t\tSocket client=null;\n\t\ttry {\n\t\t\tclient=new Socket(\"localhost\", 50000);\n\t\t\t\n\t\t\tSocketAddress address=client.getRemoteSocketAddress();\n\t\t\t\n\t\t\tSystem.out.println(address.toString());\n\t\t\t\n\t\t\t//客户端先打招呼\n\t\t\ttry(PrintWriter pw=new PrintWriter(client.getOutputStream(),true);\n\t\t\t\t\tBufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream())))\n\t\t\t{\n\t\t\t\tpw.println(\"8,3,2,1,9,7,5,4,6\");//向服务端发送信息\n\t\t\t\tString serverMessage=br.readLine();//接收服务端信息\n\t\t\t\tSystem.out.println(\"this is server message\");\n\t\t\t\tSystem.out.println(\"server:\"+serverMessage);\n\t\t\t}catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\tpublic static void main(String[] args) {\n\t\tcharClient();\n\t}\n}\n```\n效果如下：\n![](images/1.gif)\n\n\n\n\n2、编写一个简单的socket通讯程序：\n\n2.1 客户机程序，从控制台输入字符串，发送到服务器端，并将服务器返回的信息显示出来。\n\n2.2 服务器端程序，从客户机接收数据并打印，同时将从标准输入获取的信息发送给客户机\n\n2.3 满足一个服务器可以服务多个客户\n\n实现效果如图：\n图1：服务器端效\n\n![](images/1.png)\n\n图2：客户器端效果：\n\n![](images/2.png)\n\n```\npackage highchapter5;\n\nimport java.io.IOException;\nimport java.net.ServerSocket;\nimport java.net.Socket;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Server2 {\n//\t2、编写一个简单的socket通讯程序：\n//\t2.1 客户机程序，从控制台输入字符串，发送到服务器端，并将服务器返回的信息显示出来。\n//\t2.2 服务器端程序，从客户机接收数据并打印，同时将从标准输入获取的信息发送给客户机\n//\t2.3 满足一个服务器可以服务多个客户\n\t\n\tstatic List\u003cSocket\u003e list = new ArrayList\u003cSocket\u003e();\n\t\n\tpublic static void main(String[] args) {\n\n\t\tServerSocket so;\n\t\ttry {\n\t\t\tso = new ServerSocket(4001);\n\t\t\tSystem.out.println(\"服务器启动\");\n\t\t\twhile(true) {\n\t\t\t\tSocket s = so.accept();\n\t\t\t\tSystem.out.println(s.getInetAddress() + \"发送请求\");\n\t\t\t\tlist.add(s);\n\t\t\t\tOne o = new One();\n\t\t\t\tThread t = new Thread(o);\n\t\t\t\tt.start();\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n}\n```\n```\npackage highchapter5;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.net.Socket;\n\npublic class One implements Runnable {\n\n\t@Override\n\tpublic void run() {\n\t\tSocket s = Server2.list.get(Server2.list.size() - 1);\n\t\tString str = \"\";\n\t\tSendAll sendAll = new SendAll();\n\t\tThread t1 = new Thread(sendAll);\n\t\tt1.start();\n\t\ttry {\n\t\t\twhile(true) {\n\t\t\t\tBufferedReader br = new BufferedReader\n\t\t\t\t\t\t(new InputStreamReader(s.getInputStream()));\n\t\t\t\tstr = br.readLine();\n\t\t\t\tSystem.out.println(\"客户端\" + s.getInetAddress() + \"说: \" +str);\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t\tSystem.out.println(s.getInetAddress() + \"用户下线\");\n\t\t\tServer2.list.remove(s);\n\t\t}\n\t}\n}\n```\n```\npackage highchapter5;\n\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.io.OutputStreamWriter;\nimport java.io.PrintWriter;\nimport java.net.Socket;\nimport java.util.Scanner;\n\npublic class SendAll implements Runnable {\n\n\tScanner in = new Scanner(System.in);\n\tBufferedReader br = new BufferedReader(new InputStreamReader(System.in));\n\t@Override\n\tpublic void run() {\n\t\tPrintWriter out = null;\n\t\ttry {\n\t\t\twhile(true) {\n\t\t\t\tString str = br.readLine();\n\t\t\t\tfor(Socket s:Server2.list) {\n\t\t\t\t\tout = new PrintWriter\n\t\t\t\t\t\t\t(new OutputStreamWriter(s.getOutputStream()), true);\n\t\t\t\t\tout.println(str);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}finally {\n\t\t\tout.close();\n\t\t}\n\t}\n}\n```\n```\npackage highchapter5;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.net.Socket;\nimport java.net.UnknownHostException;\n\npublic class Client2 {\n\tpublic static void main(String[] args) {\n\t\tBufferedReader br = null;\n\t\tString clientStr = \"\";\n\t\t//建立通信端口，并向服务器端发送通信请求\n\t\ttry {\n\t\t\tSocket s = new Socket(\"127.0.0.1\",4001);\n\t\t\tSystem.out.println(\"与服务器端建立连接\");\n\t\t\tSend send = new Send(s);\n\t\t\tThread t1 = new Thread(send);\n\t\t\tt1.start();\n\t\t\twhile(true) {\n\t\t\t\t//获取客户端通信的信息\n\t\t\t\tbr = new BufferedReader(new InputStreamReader(s.getInputStream()));\n\t\t\t\tclientStr = br.readLine();\n\t\t\t\tSystem.out.println(\"服务器端说：\" + clientStr);\n\t\t\t}\n\t\t} catch (UnknownHostException e) {\n\t\t\te.printStackTrace();\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n}\n```\n```\npackage highchapter5;\n\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.io.OutputStreamWriter;\nimport java.io.PrintWriter;\nimport java.net.Socket;\nimport java.util.Scanner;\n\npublic class Send implements Runnable {\n\t\n\tSocket s;\n\tScanner in = new Scanner(System.in);\n\tBufferedReader br = new BufferedReader\n\t\t\t(new InputStreamReader(System.in));\n\n\tpublic Send(Socket s) {\n\t\tthis.s = s;\n\t}\n\n\t@Override\n\tpublic void run() {\n\t\tPrintWriter out = null;\n\t\ttry {\n\t\t\twhile(true) {\n\t\t\t\tout = new PrintWriter\n\t\t\t\t\t\t(new OutputStreamWriter(s.getOutputStream()),true);\n\t\t\t\tString str = br.readLine();\n\t\t\t\tout.println(str);\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}finally {\n\t\t\tout.close();\n\t\t}\n\t}\n}\n```\n\n![](images/2.gif)\n\n#### 扩展知识：\n\n[JAVA基本数据类型及其对应的包装类](https://blog.csdn.net/yangyechi/article/details/82530447)\n\n[StarUML使用简明教程](https://blog.csdn.net/luansha0/article/details/82260678)\n\n[如何使用staruml画用例图](https://jingyan.baidu.com/article/e8cdb32b5cdf9137052bad93.html)\n\n==================================================================\n#### 分割线\n==================================================================\n\n**博主为咯学编程：父母不同意学编程，现已断绝关系;恋人不同意学编程，现已分手;亲戚不同意学编程，现已断绝来往;老板不同意学编程,现已失业三十年。。。。。。如果此博文有帮到你欢迎打赏，金额不限。。。**\n\n![](images/pay.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fmytask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavaobjects%2Fmytask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fmytask/lists"}