php socket 发送数据结构

lemonash2007 2010-04-17 12:56:41
有这么一个数据结构(结构体,数组,类 哪种实现好点?)

long Total_Length ,
long Command_ID ,
long Sequence_ID

要把这个数据包发送给服务器,该怎么做(我用socket_send和socket_write不会做,看别人写的例子都是发送一个字符串)?

以前都是用c写,对php不太熟,望高人解惑!多谢!
...全文
274 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
haophper 2011-08-16
  • 打赏
  • 举报
回复
谢谢那个哥们的回答,我找到了想要的东东
momos 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lemonash2007 的回复:]

你狠! 随便把php manual上的sample粘贴过来就以为可以唬人了? 估计你连我的问题都没看完! 是不是csdn上净是你这种人!
我也不知道怎么心血来潮, 跑这种地方来了!
[/Quote]

谢谢你的提问我搜索来这里找到我想要的答案,看这里,明显是你不对在先!
yctin 2010-04-18
  • 打赏
  • 举报
回复
补充

对骂是世上最无聊的事之一,无论带不带粗,我那句话同时对两人说

jlzan1314 2010-04-18
  • 打赏
  • 举报
回复
看了这贴,心情坏了一大半.

搞程序的不要nb轰轰的,新手老手也罢..
yctin 2010-04-17
  • 打赏
  • 举报
回复
网络不能传输指针
所以一定要在发送前转换成文字格式(如 xml, json, serialize 等公用格式)
伺服器端接收后再根据自己需要转换回来

p.s. 不要随便骂人
kyzy_yy_pm 2010-04-17
  • 打赏
  • 举报
回复
爱看不看,连自己要的东西都不知道是什么,估计没人愿意给你解答这种题的,csdn上像我这样热心的人有很多,想你这么装b的没几个,人家就算给的答案不好,也没几个像你这样bb的,sb
床上等您 2010-04-17
  • 打赏
  • 举报
回复
什么都不敢说

只说,不要随便骂人
lemonash2007 2010-04-17
  • 打赏
  • 举报
回复
你狠! 随便把php manual上的sample粘贴过来就以为可以唬人了? 估计你连我的问题都没看完! 是不是csdn上净是你这种人!
我也不知道怎么心血来潮, 跑这种地方来了!
kyzy_yy_pm 2010-04-17
  • 打赏
  • 举报
回复
服务器要先开,客户端要后开,如果说端口被占用,请将服务器端和客户端的端口换一下,在调试过程中,接口多换几次
kyzy_yy_pm 2010-04-17
  • 打赏
  • 举报
回复
客户端,要后开
<?php
if(isset($_POST['submit']))
{
error_reporting(E_ALL);
set_time_limit(0);
echo "<h2>TCP/IP Connection</h2><p>";

$service_port = 1874; //连接的端口号,与服务端的端口要一致
$address = "127.0.0.1"; //设置IP

if(!($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)))exit; //创建一个SOCKET
else echo "SOCKET创建OK.<p>";
echo "试图连接 $address 端口:$service_port...<p>";

$result = socket_connect($socket, $address, $service_port); //开始连接
if ($result < 0)exit;
else echo "连接OK<p>";

$message = $_POST['message']."\r\n"; //想要向服务器传送的消息

if(!socket_write($socket, $message, strlen($message)))exit; //开始向服务器传送消息
else echo "<font color='blue'>向服务器发送信息:$message</font>(<font color='green'>成功!!!</font>)<p>";

while($out = socket_read($socket, 8192)) //读取服务器返回的消息
echo "<font color='red'>接收服务器回传信息:$out</font>(<font color='green'>成功!!!</font>)<p>";

echo "正在关闭SOCKET...<p>";
socket_close($socket);
echo "SOCKET关闭OK<p>";
}
?>

<form method="post">
<input type="text" name="message">
<input type="submit" name="submit" value="开启客户端">
</form>
kyzy_yy_pm 2010-04-17
  • 打赏
  • 举报
回复
服务器端,要先开
<?php
if(isset($_POST['submit']))
{
ignore_user_abort(true);
set_time_limit(0); //确保在连接客户端时不会超时

$address='127.0.0.1'; //设置IP
$port=1874; //端口号,调试的时候,可以多换端口来测试程序!

if(!($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)))exit; //创建一个SOCKET

if(!($ret=socket_bind($sock,$address,$port)))exit; //绑定到socket端口

if(!($ret=socket_listen($sock,4)))exit; //开始监听

//do { //以下是用来接收client(客户)端传来的信息
if (!($msgsock = socket_accept($sock)))exit;

echo "读取客户端发来的信息<p>";

$buf = socket_read($msgsock,8192); //将接收到的资源$msgsock用socket_read每次8192的大小读到$buf中
$talkback = "<font color=red>收到的信息:$buf</font><p>";
echo $talkback;

$return_msg = "嗨,尊敬的用户,您好\r\n";
if(!(socket_write($msgsock, $return_msg, strlen($talkback))<0)) //向client端返回向要的信息(可有可无)
{
echo "<font color='blue'>向客户端返回信息为:$return_msg</font><p>";
}
socket_close($msgsock);
//} while (true);

socket_close($sock);
}
?>

<form action="" method="post">
<input type="submit" name="submit" value="开启服务器">
</form>
风起于默 2010-04-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yctin 的回复:]
网络不能传输指针
所以一定要在发送前转换成文字格式(如 xml, json, serialize 等公用格式)
伺服器端接收后再根据自己需要转换回来
[/Quote]

up
lemonash2007 2010-04-17
  • 打赏
  • 举报
回复
谢谢yctin kyzy_yy_pm,我都不屑和你浪费口舌。 请参考yctin的技术和素质! 不要浪费这里的页面!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧