string(14) "127.0.0.1:9200"
URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
[query] => Array
(
[match] => Array
(
[text] => Array
(
[query] => 简单的多线程socket
)
)
)
[highlight] => Array
(
[fields] => Array
(
[text] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 8
[from] => 0
)
RESPONSE:string(7618) "{"took":25,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":30.319468,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"33922","_score":30.319468,"_source":{"id":"33922","text":"\u7b80\u5355\u7684\u591a\u7ebf\u7a0bsocket","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"qiyuan880794","tagsname":"","tagsid":"[]","catesname":"","catesid":"[]","createtime":"1537838642"},"highlight":{"text":["#em#简#/em##em#单#/em##em#的#/em##em#多#/em##em#线#/em##em#程#/em##em#socket#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"799529","_score":24.805183,"_source":{"id":"799529","text":"\u7b80\u5355\u6a21\u62df\u591a\u7ebf\u7a0bSocket\u901a\u4fe1(java)","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"iyangyuan","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637111786"},"highlight":{"text":["#em#简#/em##em#单#/em#模拟#em#多#/em##em#线#/em##em#程#/em##em#Socket#/em#通信(java)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"404676","_score":24.562286,"_source":{"id":"404676","text":"Linux socket\u7f16\u7a0b\uff08\u4e09\uff09 \u7b80\u5355\u7684\u591a\u7ebf\u7a0b\u804a\u5929\u5ba4","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"-Lei","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1632895227"},"highlight":{"text":["Linux #em#socket#/em#编#em#程#/em#(三) #em#简#/em##em#单#/em##em#的#/em##em#多#/em##em#线#/em##em#程#/em#聊天室"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"799547","_score":22.865395,"_source":{"id":"799547","text":"\u591a\u7ebf\u7a0b\u3001Socket","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"reganLi","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637111804"},"highlight":{"text":["#em#多#/em##em#线#/em##em#程#/em#、#em#Socket#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"178169","_score":21.911093,"_source":{"id":"178169","text":"socket\u7f16\u7a0b\uff0c\u7b80\u5355\u591a\u7ebf\u7a0b\u670d\u52a1\u7aef\u6d4b\u8bd5\u7a0b\u5e8f - \u70bd\u79bb","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"hgwang","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637975814"},"highlight":{"text":["#em#socket#/em#编#em#程#/em#,#em#简#/em##em#单#/em##em#多#/em##em#线#/em##em#程#/em#服务端测试#em#程#/em#序 - 炽离"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203322339","_score":21.872421,"_source":{"id":"203322339","text":"SOCKET\u4e4b\u591a\u7ebf\u7a0b","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1639724258"},"highlight":{"text":["#em#SOCKET#/em#之#em#多#/em##em#线#/em##em#程#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"799554","_score":21.800968,"_source":{"id":"799554","text":"\u7b80\u5355\u5b9e\u73b0windows\u5e73\u53f0\u4e0b\u591a\u7ebf\u7a0b+socket\u670d\u52a1\u5668","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"joshtao","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637111811"},"highlight":{"text":["#em#简#/em##em#单#/em#实现windows平台下#em#多#/em##em#线#/em##em#程#/em#+#em#socket#/em#服务器"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"799522","_score":21.747496,"_source":{"id":"799522","text":"Socket \u591a\u7ebf\u7a0b\u7f16\u7a0b","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"beilou310","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637111778"},"highlight":{"text":["#em#Socket#/em# #em#多#/em##em#线#/em##em#程#/em#编#em#程#/em#"]}}]}}"
string(14) "127.0.0.1:9200"
URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:Array
(
[query] => Array
(
[match] => Array
(
[text] => Array
(
[query] => 简单的多线程socket
)
)
)
[highlight] => Array
(
[fields] => Array
(
[text] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 8
[from] => 8
)
RESPONSE:string(7532) "{"took":27,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":30.319468,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"799546","_score":21.674288,"_source":{"id":"799546","text":"socket\u7684\u591a\u7ebf\u7a0b\u5b9e\u73b0","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"hssds","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1637111803"},"highlight":{"text":["#em#socket#/em##em#的#/em##em#多#/em##em#线#/em##em#程#/em#实现"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"374306","_score":21.618801,"_source":{"id":"374306","text":"java\u591a\u7ebf\u7a0b\uff08\u4e00\uff09\u2014\u2014\u7b80\u5355\u591a\u7ebf\u7a0bdemo","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"ohayo","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1632516271"},"highlight":{"text":["java#em#多#/em##em#线#/em##em#程#/em#(一)——#em#简#/em##em#单#/em##em#多#/em##em#线#/em##em#程#/em#demo"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"43460","_score":21.501926,"_source":{"id":"43460","text":"\u7b80\u8c08\u5355\u7ebf\u7a0b\u591a\u7ebf\u7a0b\u7684\u7406\u89e3","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"zhangjixiang123","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1635501712"},"highlight":{"text":["#em#简#/em#谈#em#单#/em##em#线#/em##em#程#/em##em#多#/em##em#线#/em##em#程#/em##em#的#/em#理解"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"374295","_score":21.475546,"_source":{"id":"374295","text":"java\u591a\u7ebf\u7a0b\u7684\u7b80\u5355demo","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"ningJJ","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1632516255"},"highlight":{"text":["java#em#多#/em##em#线#/em##em#程#/em##em#的#/em##em#简#/em##em#单#/em#demo"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"524876","_score":21.475546,"_source":{"id":"524876","text":"\u300a\u591a\u7ebf\u7a0b\u7b80\u5355\u7684\u5e94\u7528\u300b","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"lxdblog","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1634597753"},"highlight":{"text":["《#em#多#/em##em#线#/em##em#程#/em##em#简#/em##em#单#/em##em#的#/em#应用》"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"704815","_score":21.475546,"_source":{"id":"704815","text":"\u7b80\u5355\u7684\u591a\u7ebf\u7a0b\u7406\u89e3","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"ranjiewen","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1635979223"},"highlight":{"text":["#em#简#/em##em#单#/em##em#的#/em##em#多#/em##em#线#/em##em#程#/em#理解"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"752846","_score":21.250994,"_source":{"id":"752846","text":"\u7b80\u5355\u7684\u591a\u4eba\u804a\u5929\uff08c#\u2014Socket\uff09","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"charles001","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637445747"},"highlight":{"text":["#em#简#/em##em#单#/em##em#的#/em##em#多#/em#人聊天(c#—#em#Socket#/em#)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"799543","_score":20.93146,"_source":{"id":"799543","text":"\u591a\u7ebf\u7a0b\u4e0eSocket\u7f16\u7a0b","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"reganLi","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637111800"},"highlight":{"text":["#em#多#/em##em#线#/em##em#程#/em#与#em#Socket#/em#编#em#程#/em#"]}}]}}"
string(14) "127.0.0.1:9200"
URL: http://192.168.101.128/searchcore/index.php/cihere_cn_db/_search
REQUEST:Array
(
[query] => Array
(
[match] => Array
(
[title] => Array
(
[query] => 简单的多线程socket
)
)
)
[highlight] => Array
(
[fields] => Array
(
[title] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[from] => 0
)
RESPONSE:bool(false)
string(14) "127.0.0.1:9200"
URL: http://127.0.0.1:9200/likecs_down_db/_search
REQUEST:Array
(
[query] => Array
(
[bool] => Array
(
[must] => Array
(
[0] => Array
(
[match] => Array
(
[title] => Array
(
[query] => 简单的多线程socket
)
)
)
)
[must_not] => Array
(
[0] => Array
(
[term] => Array
(
[cate1] => 电子书籍
)
)
)
)
)
[highlight] => Array
(
[fields] => Array
(
[title] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 5
[from] => 0
)
RESPONSE:string(3116) "{"took":16,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":20.23507,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"67112","_score":20.23507,"_source":{"id":"67112","title":"\u8d85\u7b80\u5355Java\u591a\u7ebf\u7a0b\u586b\u8868\u6e90\u7801","spidertime":"1623077514","contenttime":"1672689020","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/210420\/161044493447.png","tag":"Java|\u591a\u7ebf\u7a0b|\u586b\u8868|\u6e90\u7801","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u8f6f\u4ef6\u5f00\u53d1","cate3":"java\u6e90\u7801","attr1":"222KB"},"highlight":{"title":["超#em#简#/em##em#单#/em#Java#em#多#/em##em#线#/em##em#程#/em#填表源码"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"9427","_score":20.23507,"_source":{"id":"9427","title":"\u8d85\u7b80\u5355Java\u591a\u7ebf\u7a0b\u586b\u8868\u6e90\u7801","spidertime":"1622876232","contenttime":"1622876232","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/210420\/161044493447.png","tag":"Java|\u591a\u7ebf\u7a0b|\u586b\u8868|\u6e90\u7801","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u8f6f\u4ef6\u5f00\u53d1","cate3":"java\u6e90\u7801","attr1":"222KB"},"highlight":{"title":["超#em#简#/em##em#单#/em#Java#em#多#/em##em#线#/em##em#程#/em#填表源码"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"96796","_score":16.111645,"_source":{"id":"96796","title":"\u7b80\u5355\u7684PHP\u535a\u5ba2\u7a0b\u5e8f eggblog v4.1.2 \u591a\u56fd\u8bed\u8a00\u7248","spidertime":"1623213977","contenttime":"1625429994","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/allimg\/090709\/2320490.jpg","tag":"php|\u535a\u5ba2|eggblog","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"php\u6e90\u7801","cate3":"\u535a\u5ba2\u7cfb\u7edf","attr1":"506KB"},"highlight":{"title":["#em#简#/em##em#单#/em##em#的#/em#PHP博客#em#程#/em#序 eggblog v4.1.2 #em#多#/em#国语言版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"33047","_score":16.111645,"_source":{"id":"33047","title":"\u7b80\u5355\u7684PHP\u535a\u5ba2\u7a0b\u5e8f eggblog v4.1.2 \u591a\u56fd\u8bed\u8a00\u7248","spidertime":"1622957380","contenttime":"1678598221","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/allimg\/090709\/2320490.jpg","tag":"php|\u535a\u5ba2|eggblog","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"php\u6e90\u7801","cate3":"\u535a\u5ba2\u7cfb\u7edf","attr1":"506KB"},"highlight":{"title":["#em#简#/em##em#单#/em##em#的#/em#PHP博客#em#程#/em#序 eggblog v4.1.2 #em#多#/em#国语言版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"60552","_score":15.962564,"_source":{"id":"60552","title":"\u591a\u591aphp\u5728\u7ebf\u8ba2\u5355\u7cfb\u7edf v3.0","spidertime":"1623068375","contenttime":"1670733041","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/120808\/_1H011Y3.gif","tag":"\u5728\u7ebf\u8ba2\u5355\u7cfb\u7edf|\u591a\u591a","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"php\u6e90\u7801","cate3":"\u5546\u52a1\u5546\u57ce","attr1":"80KB"},"highlight":{"title":["#em#多#/em##em#多#/em#php在#em#线#/em#订#em#单#/em#系统 v3.0"]}}]}}"
简单的多线程socket - 爱码网
1.socket 服务器搭建
实例化socket服务器,循环获取请求
package com.orange.util;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* socket服务器
*
* @author Chengjq
*
*/
public class SocketServer {
public static int count = 0;
public static void main(String[] args) {
// TODO 自动生成的方法存根
int port = 4404;
// 首先直接创建serversocket
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(port);
System.out.println("启动socketServer成功,等待客户端的连接");
while (true) {
socket = serverSocket.accept();
System.out.println("有新的客户端请求连接");
SocketThread st = new SocketThread(socket);
st.start();
ChatManager.getChatManager().add(st);
//启动定时任务,如果10s内没有进程
/*Runnable runnable = new Runnable() {
int clientNum = 0;
public void run() {
// task to run goes here
clientNum = ChatManager.getChatManager().vector.size();
System.out.println("剩余客户端数量:"+clientNum);
if(clientNum ==0 ){
System.out.println("连接超时,或者无客户端连接,关闭serverSocket");
//关闭socket
//.....
}
}
};
ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
service.scheduleAtFixedRate(runnable, 2, 10, TimeUnit.SECONDS); */
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("serverSocket已超时");
try {
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
SocketThread类实现多线程通信
package com.orange.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* SocketThread实现多线程通信
*
* @author Administrator
*
*/
public class SocketThread extends Thread {
ServerSocket serverSocket = null;
Socket socket = null;
public SocketThread(ServerSocket serverSocket,Socket socket) {
super();
this.serverSocket = serverSocket;
this.socket = socket;
}
public SocketThread(Socket socket) {
super();
this.socket = socket;
}
public void out(String out) {
try {
socket.getOutputStream().write(out.getBytes("utf-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void publish(String out){
ChatManager.getChatManager().publish(this, out);
}
@Override
public void run() {
// TODO Auto-generated method stub
BufferedReader socketIn = null;
PrintWriter socketOut = null;
String inMess = null;
try {
socketIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
socketOut = new PrintWriter(socket.getOutputStream());
while (true) {
inMess = socketIn.readLine();
publish(inMess);
if("bye".equals(inMess)){
ChatManager.getChatManager().remove(this);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
System.out.println("已结束当前会话");
socketOut.close();
socketIn.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
单例Chatmanage,对所有客户端线程管控处理
package com.orange.util;
import java.util.Vector;
public class ChatManager {
// 实现单例化
private ChatManager() {
};
private static final ChatManager cm = new ChatManager();
public static ChatManager getChatManager() {// 返回值为ChatManager
return cm;
}
// 单例化完成
Vector<SocketThread> vector = new Vector<SocketThread>();
public void add(SocketThread st) {// 为当前集合添加SocketThread对象
vector.add(st);
}
public void remove(SocketThread st) {// 当前客户端关闭连接
vector.remove(st);
}
public void removeall() {// 关闭所有连接
for (int i = 0; i < vector.size(); i++) {// 遍历所有的线程
SocketThread csChatSocket = vector.get(i);
if(csChatSocket!=null){
vector.remove(csChatSocket);
}
}
}
// 某一个线程向其他的客户端发送信息
public void publish(SocketThread st, String out) {
for (int i = 0; i < vector.size(); i++) {// 遍历所有的线程
SocketThread csChatSocket = vector.get(i);
if (csChatSocket != st)// 判断不是当前线程就发送此消息
csChatSocket.out(out + "\n");
}
}
// 向当前线程发信息
public void publish_present(SocketThread st, String out) {
st.out(out + "\n");
}
}
至此,服务器搭建完成
2.客户端(创建两个客户端)
客户端1(监听指定服务器,通过控制台输入消息进行服务器与客户端以及客户端之间的通信,)
package com.orange;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端1
* @author Chengjq
*
*/
public class SocketClient1 {
@SuppressWarnings("static-access")
public static void main(String[] args) {
try {
//初始化客户端
Socket socket = new Socket("127.0.0.1", 4404);
BufferedReader readline = new BufferedReader(new InputStreamReader(System.in));
//获取输出打印流
PrintWriter socketOut = new PrintWriter(socket.getOutputStream());
String outTemp = null;
System.out.println("开始准备向服务器端发起请求---\n自己:");
// 已启动连接socket服务器,准备实时接收来自其他客户端的消息
GetMess getMess = new GetMess(socket);
getMess.start();
// 通过控制台发送消息给其他客户端,以“bye”为结束语
while ((outTemp = readline.readLine()) != null) {
//发送信息
socketOut.println(outTemp);
socketOut.flush();
if("bye".equals(outTemp)){
break;
}
}
getMess.currentThread().interrupt();
//依次关闭各种流
readline.close();
socketOut.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端2
package com.orange;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient2 {
@SuppressWarnings("static-access")
public static void main(String[] args) {
try {
//初始化客户端
Socket socket = new Socket("127.0.0.1", 4404);
BufferedReader readline = new BufferedReader(new InputStreamReader(System.in));
//获取输出打印流
PrintWriter socketOut = new PrintWriter(socket.getOutputStream());
String outTemp = null;
System.out.println("开始准备向服务器端发起请求---\n自己:");
// 已启动连接socket服务器,准备实时接收来自其他客户端的消息
GetMess getMess = new GetMess(socket);
getMess.start();
// 通过控制台发送消息给其他客户端,以“bye”为结束语
while ((outTemp = readline.readLine()) != null) {
//发送信息
socketOut.println(outTemp);
socketOut.flush();
if("bye".equals(outTemp)){
break;
}
}
getMess.currentThread().interrupt();
//依次关闭各种流
readline.close();
socketOut.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
GetMess(多线程处理获取其他客户端的消息并且展示)
package com.orange;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class GetMess extends Thread {
Socket socket = null;
public GetMess(Socket socket) {
super();
this.socket = socket;
}
@Override
public void run() {
// TODO Auto-generated method stub
BufferedReader socketIn = null;
try {
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
socketIn = new BufferedReader(isr);
String inTemp = null;
while(true){
inTemp = socketIn.readLine();
if(inTemp != null && !"bye".equals(inTemp) ){
System.out.println("好友:\n"+inTemp);
}else{
System.out.println("好友:\n已下线,关闭当前回话");
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
Thread.currentThread().interrupt();
socketIn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
ok,简单的sockte服务与客户端完成了
先启动server
在分别启动client




输入结束bye,关闭当前会话

相关文章:
-
2021-11-17
-
2021-09-25
-
2021-10-29
-
2021-09-25
-
2021-10-19
-
2021-11-04
-
2021-11-21
-
2021-11-17
猜你喜欢
-
2021-11-17
-
2021-09-29
-
2021-11-17
-
2021-11-27
-
2021-12-17
-
2021-11-17
-
2021-11-17
相关资源
-
下载
2023-01-03
-
下载
2021-07-05
-
下载
2022-12-11