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] => Linux socket网络编程基础 tcp和udp
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 0
)
RESPONSE:
string(7971) "{"took":32,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":47.65522,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"9375","_score":47.65522,"_source":{"id":"9375","text":"Linux socket\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840 tcp\u548cudp","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":"MINGLE-CHB","tagsname":"","tagsid":"[]","catesname":"Linux\u4e0bc\u7f16\u7a0b","catesid":"[\"1864\"]","createtime":"1520257047"},"highlight":{"text":["#em#Linux#/em# #em#socket#/em##em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#基#/em##em#础#/em# #em#tcp#/em##em#和#/em##em#udp#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"781193","_score":40.06007,"_source":{"id":"781193","text":"\u7f51\u7edc\u7f16\u7a0b1 \u7f51\u7edc\u5f00\u53d1\u57fa\u7840(Socket\u3001TCP\u3001UDP)","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":"ccsuCBG","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1639456600"},"highlight":{"text":["#em#网#/em##em#络#/em##em#编#/em##em#程#/em#1 #em#网#/em##em#络#/em#开发#em#基#/em##em#础#/em#(#em#Socket#/em#、#em#TCP#/em#、#em#UDP#/em#)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"863372","_score":36.658535,"_source":{"id":"863372","text":"python \u7f51\u7edc\u7f16\u7a0b  TCP\/IP  socket UDP","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":"think-and-do","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1638006188"},"highlight":{"text":["python #em#网#/em##em#络#/em##em#编#/em##em#程#/em#  #em#TCP#/em#/IP  #em#socket#/em# #em#UDP#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"781175","_score":36.294895,"_source":{"id":"781175","text":"\u3010\u7f51\u7edc\u7f16\u7a0b1\u3011\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840-TCP\u3001UDP\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":"17bdw","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636818149"},"highlight":{"text":["【#em#网#/em##em#络#/em##em#编#/em##em#程#/em#1】#em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#基#/em##em#础#/em#-#em#TCP#/em#、#em#UDP#/em##em#编#/em##em#程#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203287520","_score":35.405827,"_source":{"id":"203287520","text":"java\u57fa\u7840\u2014\u2014Socket\u7f16\u7a0b\uff1aTCP\/UDP\u533a\u522b","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":"1623564245"},"highlight":{"text":["java#em#基#/em##em#础#/em#——#em#Socket#/em##em#编#/em##em#程#/em#:#em#TCP#/em#/#em#UDP#/em#区别"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"404674","_score":33.94357,"_source":{"id":"404674","text":"linux socket\u7f16\u7a0b\u4e4bTCP\u4e0eUDP","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":"magicbox","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1635832071"},"highlight":{"text":["#em#linux#/em# #em#socket#/em##em#编#/em##em#程#/em#之#em#TCP#/em#与#em#UDP#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"464988","_score":33.508705,"_source":{"id":"464988","text":"\u7f51\u7edc\u7f16\u7a0b2_\u7f51\u7edc\u901a\u8baf\u534f\u8bae, socket(tcp, udp)","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":"guyannanfei","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637002846"},"highlight":{"text":["#em#网#/em##em#络#/em##em#编#/em##em#程#/em#2_#em#网#/em##em#络#/em#通讯协议, #em#socket#/em#(#em#tcp#/em#, #em#udp#/em#)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"736184","_score":33.024525,"_source":{"id":"736184","text":"\u57fa\u4e8eSocket\u7684UDP\u548cTCP\u7f16\u7a0b\u4ecb\u7ecd","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":"xzj8023tp","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1636216917"},"highlight":{"text":["#em#基#/em#于#em#Socket#/em#的#em#UDP#/em##em#和#/em##em#TCP#/em##em#编#/em##em#程#/em#介绍"]}}]}}"
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] => Linux socket网络编程基础 tcp和udp
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 8
)
RESPONSE:
string(7697) "{"took":39,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":47.65522,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"781074","_score":32.995995,"_source":{"id":"781074","text":"Java \u3010\u7f51\u7edc\u7f16\u7a0bSocket\uff08TCP\u3001UDP\uff09\u3011\u5b66\u4e60\u7b14\u8bb0","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":"focuslife","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636817405"},"highlight":{"text":["Java 【#em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#Socket#/em#(#em#TCP#/em#、#em#UDP#/em#)】学习笔记"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203344074","_score":32.91747,"_source":{"id":"203344074","text":"\u7f51\u7edc\u7f16\u7a0b\uff08UDP\/TCP\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":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1632531278"},"highlight":{"text":["#em#网#/em##em#络#/em##em#编#/em##em#程#/em#(#em#UDP#/em#/#em#TCP#/em#)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"421000","_score":32.567444,"_source":{"id":"421000","text":"socket\u4e0eTCP\/UDP\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":"aspirant","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1633142247"},"highlight":{"text":["#em#socket#/em#与#em#TCP#/em#/#em#UDP#/em##em#编#/em##em#程#/em#~"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203344179","_score":32.343147,"_source":{"id":"203344179","text":"Linux Socket C\u8bed\u8a00\u7f51\u7edc\u7f16\u7a0b\uff1aTCP Socket","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":"1628257797"},"highlight":{"text":["#em#Linux#/em# #em#Socket#/em# C语言#em#网#/em##em#络#/em##em#编#/em##em#程#/em#:#em#TCP#/em# #em#Socket#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203257584","_score":32.089054,"_source":{"id":"203257584","text":"linux\u7f51\u7edc\u7f16\u7a0b-TCP socket\u7f16\u7a0b\u6a21\u578b","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":"1640391902"},"highlight":{"text":["#em#linux#/em##em#网#/em##em#络#/em##em#编#/em##em#程#/em#-#em#TCP#/em# #em#socket#/em##em#编#/em##em#程#/em#模型"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"781190","_score":31.84345,"_source":{"id":"781190","text":"\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840\uff08socket\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":"baicai37","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636818185"},"highlight":{"text":["#em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#基#/em##em#础#/em#(#em#socket#/em#)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"856981","_score":31.673101,"_source":{"id":"856981","text":"Java Web \u57fa\u7840\uff08\u4e00\uff09 \u57fa\u4e8eTCP\u7684Socket\u7f51\u7edc\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":"forget406","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1637651196"},"highlight":{"text":["Java Web #em#基#/em##em#础#/em#(一) #em#基#/em#于#em#TCP#/em#的#em#Socket#/em##em#网#/em##em#络#/em##em#编#/em##em#程#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"756348","_score":31.602201,"_source":{"id":"756348","text":"java\u7f51\u7edc\u7f16\u7a0b(TCP\uff0cUDP)","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":"wwwzhouzy","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1637672457"},"highlight":{"text":["java#em#网#/em##em#络#/em##em#编#/em##em#程#/em#(#em#TCP#/em#,#em#UDP#/em#)"]}}]}}"
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] => Linux socket网络编程基础 tcp和udp
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [from] => 0
)
RESPONSE:
bool(false)
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] => Linux socket网络编程基础 tcp和udp
                                                )

                                        )

                                )

                        )

                    [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(3047) "{"took":12,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":42.72196,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"71321","_score":42.72196,"_source":{"id":"71321","title":"\u57fa\u4e8eTCP\u548cUDP\u7684Socket\u7f16\u7a0b WORD\u7248","spidertime":"1623126880","contenttime":"1678298101","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170406\/0T33Ab962.png","tag":"tcp|UDP|Socket|\u7f16\u7a0b","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"\u7f16\u7a0b\u5176\u5b83","attr1":"13.7KB"},"highlight":{"title":["#em#基#/em#于#em#TCP#/em##em#和#/em##em#UDP#/em#的#em#Socket#/em##em#编#/em##em#程#/em# WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"36273","_score":42.72196,"_source":{"id":"36273","title":"\u57fa\u4e8eTCP\u548cUDP\u7684Socket\u7f16\u7a0b WORD\u7248","spidertime":"1622961289","contenttime":"1675219712","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170406\/0T33Ab962.png","tag":"tcp|UDP|Socket|\u7f16\u7a0b","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"\u7f16\u7a0b\u5176\u5b83","attr1":"13.7KB"},"highlight":{"title":["#em#基#/em#于#em#TCP#/em##em#和#/em##em#UDP#/em#的#em#Socket#/em##em#编#/em##em#程#/em# WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"69148","_score":28.60415,"_source":{"id":"69148","title":"PYTHON\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840 pdf\u7248","spidertime":"1623080825","contenttime":"1680370801","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/130122\/1P54512V8.gif","tag":"Python|\u7f51\u7edc\u7f16\u7a0b","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"Python\u7535\u5b50\u4e66","attr1":"26MB"},"highlight":{"title":["PYTHON#em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#基#/em##em#础#/em# pdf版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"33950","_score":28.60415,"_source":{"id":"33950","title":"PYTHON\u7f51\u7edc\u7f16\u7a0b\u57fa\u7840 pdf\u7248","spidertime":"1622958529","contenttime":"1622958529","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/130122\/1P54512V8.gif","tag":"Python|\u7f51\u7edc\u7f16\u7a0b","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"Python\u7535\u5b50\u4e66","attr1":"26MB"},"highlight":{"title":["PYTHON#em#网#/em##em#络#/em##em#编#/em##em#程#/em##em#基#/em##em#础#/em# pdf版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"71583","_score":27.87973,"_source":{"id":"71583","title":"linux socket\u7f51\u7edc\u7f16\u7a0b\u8be6\u89e3 \u4e2d\u6587WORD\u7248","spidertime":"1623127257","contenttime":"1625112347","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/161223\/0S9445bL3.png","tag":"Linux|Socket|\u7f51\u7edc\u7f16\u7a0b","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"Linux_unix","attr1":"15.2KB"},"highlight":{"title":["#em#linux#/em# #em#socket#/em##em#网#/em##em#络#/em##em#编#/em##em#程#/em#详解 中文WORD版"]}}]}}"
Linux socket网络编程基础 tcp和udp - 爱码网
MINGLE-CHB

Socket TCP网络通信编程

首先,服务器端需要做以下准备工作:

  (1)调用socket()函数。建立socket对象,指定通信协议。

  (2)调用bind()函数。将创建的socket对象与当前主机的某一个IP地和端口绑定。

  (3)调用listen()函数。使socket对象处于监听状态,并设置监听队列大小。

客户端需要做以下准备工作:

  (1)调用socket()函数。建立socket()对象,指定相同通信协议。

  (2)应用程序可以显式的调用bind()函数为其绑定IP地址和端口,当然,也可以将这工作交给TCP/IP协议栈。

接着建立通信连接:

  (1)客户端调用connect()函数。向服务器端发出连接请求。

  (2)服务端监听到该请求,调用accept()函数接受请求,从而建立连接,并返回一个新的socket文件描述符专门处理该连接。

然后通信双方发送/接收数据:

  (1)服务器端调用write()或send()函数发送数据,客户端调用read()或者recv()函数接收数据。反之客户端发送数据,服务器端接收数据。

  (2)通信完成后,通信双方都需要调用close()或者shutdown()函数关闭socket对象。

 

类比电话通信,面向连接的socket通信实现图

 

 

展示一个代码示例:

服务端:

#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<unistd.h>
#include <arpa/inet.h>
#include<pthread.h>

static void usage(const char *proc)
{
    printf("Please use :%s [IP] [port]\n",proc);
}

void thread_run(void *arg)
{
    printf("creat a new thread\n");
    int fd = (int)arg;
    char buf[1024];

    while(1){
        memset(buf,'\0',sizeof(buf));
        ssize_t _s = read(fd,buf,sizeof(buf) - 1);
        if(_s > 0){
            buf[_s] = '\0';
            printf("client say : %s\n",buf);
        }    
        memset(buf,'\0',sizeof(buf));
        printf("please Enter: ");
        fflush(stdout);
        ssize_t _s2 = read(0,buf,sizeof(buf) - 1);
        if(_s2 > 0){
            write(fd,buf,strlen(buf));
        }
    }
}

int main(int argc,char *argv[])
{
    if(argc != 3){
        usage(argv[0]);
        exit(1);
    }

    //1.creat socket

    int sock = socket(AF_INET,SOCK_STREAM,0);
    if(sock < 0){
        perror("creat socket error\n");
        return 1;
    }

    struct sockaddr_in local;
    local.sin_family = AF_INET;
    local.sin_port = htons(atoi(argv[2]));
    local.sin_addr.s_addr = inet_addr(argv[1]);

    //2.bind

    if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0){
        perror("bind error\n");
        close(sock);
        return 2;
    }
   
    //3.listen

    if(listen(sock,10) < 0){
        perror("listen error\n");
        close(sock);
        return 3;
    }

    printf("bind and listen success!wait accept...\n");
    
    //4.accept

    struct sockaddr_in peer;
    socklen_t len = sizeof(peer);
    while(1){

        int fd = accept(sock,(struct sockaddr*)&peer ,&len);

        if(fd < 0){
            perror("accept error\n");
            close(sock);
            return 4;
        }
        
        printf("get connect,ip is : %s port is : %d\n",inet_ntoa(peer.sin_addr),ntohs(peer.sin_port));

        pthread_t id;
        pthread_create(&id,NULL,thread_run,(void*)fd);

        pthread_detach(id);

    }
    close(sock);
    return 0;
}

客户端:

#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<errno.h>
#include<netinet/in.h>
#include<arpa/inet.h>

static void usage(const char *proc)
{
    printf("please use : %s [ip] [port]\n",proc);
}
int main(int argc,char *argv[])
{
    if( argc != 3 ){
        usage(argv[0]);
        exit(1);
    }
    
    int sock = socket(AF_INET,SOCK_STREAM,0);
    if(sock < 0){
        perror("socket error");
        return 1;
    }

    struct sockaddr_in remote;
    remote.sin_family = AF_INET;
    remote.sin_port = htons(atoi(argv[2]));
    remote.sin_addr.s_addr = inet_addr(argv[1]);


    int ret = connect(sock,(struct sockaddr*)&remote,sizeof(remote));
    if(ret < 0){
        printf("connect failed:%s\n",strerror(errno));
        return 2;
    }
    
    printf("connect success!\n");

    char buf[1024];
    while(1){
        memset(buf,'\0',sizeof(buf));
        printf("please enter:");
        fflush(stdout);
        ssize_t _s = read(0,buf,sizeof(buf)-1);
        if(_s > 0){
            buf[_s - 1] = '\0';
            write(sock,buf,strlen(buf));
            _s = read(sock,buf,sizeof(buf)-1);
            if(_s > 0){
                if(strncasecmp(buf,"quit",4) == 0){
                     printf("qiut\n");
                     break;
                 }
                buf[_s -1] = '\0';
                printf("%s\n",buf);
            }
        }
    }
    close(sock);
    return 0;
}

 

UDP网络通信编程

 客户不与服务器建立链接,而是管使用sendto函数给服务器发送数据报,其中必须指定目的地址(即服务器地址)作为参数。类似的,服务器不接受来自客户的连接,而只管调用

revcfrom函数等待来自某个客户数据的到达。revcfrom将与所接受到的数据报一道返回客户的协议地址,因此服务器可以把响应发送给正确的客户。

 

 

服务端示例
//服务端代码示例:

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>

int main(int argc,char *argv[])
{
    if(argc != 3){
        printf("Please Enter: %s [ip] [port]",argv[0]);
        return 1;
    }
    
    int sock = socket(AF_INET,SOCK_DGRAM,0);
    if(sock < 0){
        perror("socket error");
        return 2;
    }

    struct sockaddr_in local;
    local.sin_family = AF_INET;
    local.sin_port = htons(atoi(argv[2]));
    local.sin_addr.s_addr = inet_addr(argv[1]);


    if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0){
        perror("bind error");
        return 3;
    }

    int done = 0;
    struct sockaddr_in peer;
    socklen_t len = sizeof(peer);

    char buf[1024];
    while(!done){
        memset(buf,'\0',sizeof(buf));
        recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr*)&peer,&len);
        printf("#########################\n");
        printf("get a client,socket: %s:%d\n",inet_ntoa(peer.sin_addr),ntohs(peer.sin_port));

        printf("client : %s ,echo client!\n",buf);
        printf("#########################\n");
        sendto(sock,buf,sizeof(buf),0,(struct sockaddr*)&peer,len);

    }
    return 0;
}

 

posted on 2018-03-05 21:37 Mingle_CHB 阅读(...) 评论(...) 编辑 收藏

相关文章:

  • 2021-11-13
  • 2021-09-25
  • 2021-10-02
  • 2021-08-06
  • 2021-12-25
  • 2021-11-13
  • 2021-11-23
  • 2021-11-23
猜你喜欢
  • 2021-12-14
  • 2021-11-27
  • 2021-11-13
  • 2021-06-13
  • 2021-11-02
  • 2021-11-16
  • 2021-11-07
相关资源
相似解决方案