接收socket数据,但是绑定服务器那边数据是一直发的,为什么只接受到一串
发送数据是这样@,13,56,89,5,21,64,79,51,46,31,$的,我接收的是这样的
{"is_ok":1,"data":@,13,56,89,5,21,64,79,51,46,31,$}
但是数据是一直发,虽然都是同一串数据,但是我只接受一串,后面就没有了,怎么定义数据的开始和结束标志的!!想在服务端添加到数据库看看,但是怎么转成json数据格式啊!发送数据格式要怎么改,因为后面要用ajax得到数据添加到highchart,怎么调用这串数据啊!是写成json数组吗!
/*------------------------------------------------------ *///-- socket客户端/*------------------------------------------------------ */ //+error_reporting(0);set_time_limit(0); // 接收GET数据$msg = isset($_GET['msg']) ? trim($_GET['msg']) : ''; // socket错误代码function strerror($code) { $str = ''; switch($code) { case 10022: $str = '参数错误'; break; case 10048: $str = '通常每个套接字地址(协议/网络地址/端口)只允许使用一次。'; break; case 10061: $str = '由于服务器积极拒绝,连接失败!'; break; default: $str = '未知错误'; break; } return $str;} function get_server_config() { return simplexml_load_file('include/server_config.xml');}// 获取socket服务端配置信息$server_conf = get_server_config();$ip = $server_conf->ip;$port = (int)$server_conf->port; $out_str = '{"is_ok":0,"data":'; // 创建socketif(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { $out_str .= '"' . strerror(socket_last_error()) . '"}';} // 连接到服务器else if(socket_connect($socket, $ip, $port) === false) { $out_str .= '"' . strerror(socket_last_error($socket)) . '"}';} // 向服务器发送请求else if(socket_write($socket, $msg, strlen($msg)) === false) { $out_str .= '"' . strerror(socket_last_error($socket)) . '"}';} else if(($out = socket_read($socket, 8192)) === false) { $out_str .= '"' . strerror(socket_last_error($socket)) . '"}';} else { $out_str = '{"is_ok":1,"data":' . $out . '}';} echo $out_str; // 关闭socketsocket_close($socket); /*------------------------------------------------------ *///-- socket服务端/*------------------------------------------------------ */ include('include/init.php');// 设置时区//date_default_timezone_set('Etc/GMT-8'); echo str_repeat(' ', 4000);error_reporting(0);set_time_limit(0); ob_start(); // 显示提示信息function show_tip($msg, $is_ok=true) { if($is_ok) { $msg = '<font color=\"#090\">' . $msg . '</font>'; } else { $msg = '<font color=\"#f00\">' . $msg . '</font>'; } echo '<script>parent.$("#tip").showTip("' . date('Y-m-d H:i:s', time()) . '","' . $msg . '");</script>'; ob_flush(); flush(); sleep(1);} // 获取socket服务端配置信息$server_conf = get_server_config();$ip = $server_conf->ip;$port = (int)$server_conf->port;$server_name = $server_conf->name; show_tip($server_name . ' 正在初始化...'); // 创建socketif(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { show_tip($server_name . ' 创建失败,原因:' . strerror(socket_last_error()), false);} else { show_tip($server_name . ' 创建成功!');} // 绑定socket到指定IP,端口if(socket_bind($socket, $ip, $port) === false) { show_tip('绑定 ' . $server_name . ' 失败,原因:' . strerror(socket_last_error($socket)), false);} else { show_tip('绑定 ' . $server_name . ' 到 ' . $ip . ', ' . $port);} // 监听if(socket_listen($socket, 5) === false) { show_tip($server_name . ' 监听失败,原因:' . strerror(socket_last_error($socket)), false);} else { show_tip($server_name . ' 正在监听中...'); echo '<script>location.href="login.php";</script>'; ob_flush(); flush();} static $w_socket = null; // webstatic $a_socket = null; // android $rNodeDataModel = new NodeDataModel(); do { if(($msg_socket = socket_accept($socket)) === false) { socket_close($msg_socket); break; } else { if(($buffer = socket_read($msg_socket, 8192)) !== false) { $buffer = trim($buffer); if($buffer == 'web') { $w_socket = $msg_socket; } else if($buffer == 'android') { $a_socket = $msg_socket; } else if($buffer != 'stop') { $str_arr = explode('&', $buffer); if(!empty($str_arr[1])) { $c_name = trim($str_arr[0]); // 客户端标识 $c_data = trim($str_arr[1]); // 客户端数据 if($c_name == 'computer') { // 判断数据是否为json格式 if(($r_arr = json_decode($c_data, true)) != null) { if($w_socket != null) { socket_write($w_socket, $c_data, strlen($c_data)); } if($a_socket != null) { socket_write($a_socket, $c_data, strlen($c_data)); } // 添加到数据库 foreach($r_arr as $v) { $v['node_id'] = $v['point']; unset($v['point']); $v['create_time'] = time(); $rNodeDataModel->insert($v); } } } } socket_close($msg_socket); } else { socket_close($msg_socket); } } else { socket_close($msg_socket); } } } while($buffer != 'stop'); // 关闭socketsocket_close($w_socket);socket_close($a_socket);socket_close($socket);
回复讨论(解决方案)
你请求一次,自然只得到一次数据
你请求一次,自然只得到一次数据
哪请问版主,怎么多次请求,还有时间间隔怎么写的,用不用定义那串数据的开始和结束标记啊!谢谢版主
你请求一次,自然只得到一次数据
如果要把那串数据添加到数据库,那串数据要怎么修改格式(原始格式或者接收到的)和调用, 你多次调用客户端程序,就可多次收到数据了
如何把数据放进数据库,取决于你数据库中是如何保存的
传输的数据格式应按你的使用需求进行设计
你多次调用客户端程序,就可多次收到数据了
如何把数据放进数据库,取决于你数据库中是如何保存的
传输的数据格式应按你的使用需求进行设计
function connect() { $.ajax({ url: 'client.php?msg=web', type: 'get', dataType: 'json', success: function(result) {//由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。 $('#tb tr:gt(0)').remove();//删除之前的数据 if(result.is_ok) { var x = (new Date()).getTime(); $.each(result.data, function(i) { var index = parseInt(result.data[i].point) - 1; chart01.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart02.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart03.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart04.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart05.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart06.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart07.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart08.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart09.series[index].addPoint([x, parseFloat(result.data[i])], true, true); chart10.series[index].addPoint([x, parseFloat(result.data[i])], true, true); },1000);//这里的是隔时间自动取数据 } else { error = true; layer.alert(result.data); } }, complete: function(XHR, TS) {//请求完成后回调函数 (请求成功或失败之后均调用)。 XHR = null; // 释放XMLHttprequest对象 if(!error) connect(); } }); } function create_data() { var data = [], time = (new Date()).getTime(), i; for (i = -19; i <= 0; i++) { data.push({ x: time + i * 1000 }); } return data; } var chart01, chart02, chart03, chart04, chart05, chart06, chart07,chart08,chart09,chart10; function create_chart(id, t, y_t) { var chart = new Highcharts.Chart({ chart: { renderTo: id, type: 'spline', animation: Highcharts.svg, backgroundColor: '#272735', events: { load: connect } }, title: { text: t }, xAxis: { type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: y_t }, plotLines: [{//线 value: 0, width: 1, color: '#808080' }] }, tooltip: { formatter: function() { return '<b>'+ this.series.name +'</b><br/>'+ Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x); } }, series: [{ name: '实时数据', data: [29.9, -71.5, 106.4, 15.2, 144.0, 258.0, 135.6, 177.5, 216.4, 194.1, 95.6, 54.4] //create_data() }], credits:{ enabled:false } }); return chart; }
建议你认真阅读一下 Highcharts 的 ajax 范例
肯定要比我专业的多
就是把data的值,怎么拿出来不知道,像result.data[i]这种形式
你代码请求一次当然是一个结果
你代码请求一次当然是一个结果
我把网站打开,只打开一次啊!不停刷新才不断请求啊。所以加了这个$.each(result.data, function(i) {
var index = parseInt(result.data[i].point) - 1;
chart01.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart02.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart03.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart04.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart05.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart06.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart07.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart08.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart09.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
chart10.series[index].addPoint([x, parseFloat(result.data[i])], true, true);
},1000);//1000每隔时间会自动取数据
关键怎么data的值怎么给坐标 chart1.series[index].addPoint([x, parseFloat(result.data[i])], true, true);

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Instagram은 2012 년 Facebook에서 유명한 인수에 이어 타사 사용을 위해 두 개의 API 세트를 채택했습니다. Instagram Graph API 및 Instagram Basic Display API입니다. 개발자는

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다
