php命令发送数据包,php发送post数据包

php如何发送和接收JSON数据

对于json,PHP有对应的方法进行操作。

10年积累的网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有子洲免费网站建设让你可以放心的选择与我们合作。

一般而言,json会以字符串形式传给PHP脚本,一般都是放在$_POST里面,

14

?php

// 接收

$json_parameter = $_POST['json_str'];

// 处理, 变成数组

$array = json_decode($json_parameter);

// PHP 把数组数据变成json格式字符串,发给页面

$demo = array(

'key' = 'value',

'key2' = 'value2'

);

$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}

echo $demo_json;

php://input 和 php://output

$data = file_get_contents("php://input");

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

1, php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。

2,php://input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。

3,Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST

4,PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA

5, 只有Coentent-Type为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。

6,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。

7,php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini

8,PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

如何在命令行下运行php脚本以及传递参数

参数直接跟到,执行php test.php 参数1,参数2,... 脚本中这样接收 echo "接收到{$argc}个参数"; print_r($argv);

关于PHP中POST传递参数问题

将数据转换成 json 格式的字符串, 并通过 CURL 的 POST 的形式传递参数给服务端, 但是在服务端无法用 $_POST 获取到数据。后台用 $_POST 获取到的信息为空, 但是可以通过 $post = file_get_contents("php://input") 获取到请求的相关信息。

Coentent-Type 的值为 application/x-www-data-urlencode 和 multipart/form-data 时, php才会将http请求数据包中的数据填进 $_POST 。

如果 POST 的原始数据是一维数组或拼接的标准格式的键值对字符串,那么可以用 $_POST 来获取。

如果要通过 file_get_contents 获取,这种情况下可以发送 json 字符串,用 json_encode 编码转换一下,或者使用 http_build_query 。

1、 区别 PHP 的 $_POST、$HTTP_RAW_POST_DATA 和 php://input

2、 accept 和 content-Type区别

3、 Http Header里的Content-Type

如何在PHP中使用socket+XML发送数据包

接收指定IP的数据包,其他IP都要过滤吧,那就用防火墙来搞吧

使用的是client段的获取方式,用client的可以指定IP,代码大概如下

public void SendMessage()

{

ASCII = Encoding.ASCII;

// 构造用于发送的 字节缓冲.

Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);

// 构造用于接收的 字节缓冲.

Byte[] recvBytes = new Byte[256];

// IP地址.

IPAddress localAddr = IPAddress.Parse("192.168.19.81");

// 接入点.

IPEndPoint ephost = new IPEndPoint(localAddr, PORT);

// 第一个参数:AddressFamily = 指定 Socket 类的实例可以使用的寻址方案。

// Unspecified 未指定地址族。

// InterNetwork IP 版本 4 的地址。

// InterNetworkV6 IP 版本 6 的地址。

//

// 第二个参数:SocketType = 指定 Socket 类的实例表示的套接字类型。

// Stream 一个套接字类型,支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。

// 此类型的 Socket 与单个对方主机通信,并且在通信开始之前需要建立远程主机连接。

// 此套接字类型使用传输控制协议 (Tcp),AddressFamily 可以是 InterNetwork,也可以是 InterNetworkV6。

//

// 第三个参数:ProtocolType = 指定 Socket 类支持的协议。

// Tcp 传输控制协议 (TCP)。

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

try

{

// 尝试连接主机.

s.Connect(ephost);

//Console.WriteLine("向服务器发送到了:{0}", SEND_MESSAGE);

// 向主机发送数据.

// s.Send(sendBytes, sendBytes.Length, SocketFlags.None);

// 接收服务器的应答.

Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

StringBuilder buff = new StringBuilder();

// while (bytes 0)

// {

// 将缓冲的字节数组,装换为字符串.

// String str = ASCII.GetString(recvBytes, 0, bytes);

String str = "";

for (int i = 0; i recvBytes.Length; i++)

{

str = str + recvBytes[i];

}

int iCount = 0;

iCount = int.Parse(str.Substring(13, 6)) ;

// 加入字符串缓存

buff.Append(str);

// 再次接受,看看后面还有没有数据.

//bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

// }

textBox1.Text = iCount.ToString();

}

catch (Exception ex)

{

MessageBox.Show("连接/发送/接收过程中,发生了错误!");

MessageBox.Show(ex.Message);

//Console.WriteLine("连接/发送/接收过程中,发生了错误!");

//Console.WriteLine(ex.Message);

//Console.WriteLine(ex.StackTrace);

}

finally

{

s.Close();

}


标题名称:php命令发送数据包,php发送post数据包
标题来源:http://hbruida.cn/article/dssgsii.html