接收指定IP的数据包,其他IP都要过滤吧,那就用防火墙来搞吧
使用的是client段的获取方式,用client的可以指定IP,代码大概如下
public void SendMessage()
{
ASCII = Encoding.ASCII;
// 构造用于发送的 字节缓冲.
Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);
// 构造用于接收的 字节缓冲.
// IP地址.
// 接入点.
IPEndPoint ephost = new IPEndPoint(localAddr, PORT);
// 第一个参数:AddressFamily = 指定 Socket 类的实例可以使用的寻址方案.
// Unspecified 未指定地址族.
//
// 第二个参数:SocketType = 指定 Socket 类的实例表示的套接字类型.
// Stream 一个套接字类型,支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界.
// 此类型的 Socket 与单个对方主机通信,并且在通信开始之前需要建立远程主机连接.
// 第三个参数: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);
// 接收服务器的应答.
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;
// 加入字符串缓存
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();
同一个域名下的就用ajax直接请求,不同域名下的话就要curl 做请求
然后自定义一个函数sendMail(函数里的C是thinkphp里获取配置文件的方法,自己在不是tp里的话使用直接require就可以了)
然后在相关代码里使用调用sendMail发送邮件,这里以ThinkPHP里的controller为例子,使用方法如下:
发送成功后显示 'Done!':
然后就可以去邮箱查看是否收取到邮件咯.
就是这么简单.
参考:网页链接
php调接口都是通过curl来完成的.
下面是我项目中的一个方法:
$url 是要post的地址
$header 请求头,如果模拟浏览器访问需要
$timeout 超时时间
//公共获取指定网页内容
if(empty($url))?return?$url;
$curl?=?curl_init();
curl_setopt($curl,?CURLOPT_URL,$url);//请求url地址
curl_setopt($curl,?CURLOPT_HTTPHEADER?,?$header?);?//构造IP
if(!empty($params)?count($params)?0){
curl_setopt($curl,?CURLOPT_POST,?true);
//Request?Payload格式数据
if(isset($params['is_json'])?$params['is_json']?===?true){
unset($params['is_json']);
$params?=?json_encode($params);
}else{
$params?=?http_build_query($params);
curl_setopt($curl,?CURLOPT_POSTFIELDS,?$params);??
//curl_setopt($curl,?CURLOPT_HEADER,?true);//是否返回响应头信息
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?true);//是否将结果返回
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?true);//是否重定向
curl_setopt($curl,?CURLOPT_SSL_VERIFYPEER,?false);?//?只信任CA颁布的证书?
//curl_setopt($curl,?CURLOPT_CAINFO,?$cacert);?//?CA根证书(用来验证的网站证书是否是CA颁布)?
//?从证书中检查SSL加密算法是否存在
curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?FALSE);
curl_setopt($curl,?CURLOPT_HTTP_VERSION,?CURL_HTTP_VERSION_1_0);?
//curl_setopt($curl,?CURLOPT_HTTPHEADER,?array("Expect:?"));?
curl_setopt($curl,?CURLOPT_CONNECTTIMEOUT,?$timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
curl_setopt($curl,?CURLOPT_TIMEOUT,?$timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间.如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用.
//?自动设置Referer
curl_setopt($curl,?CURLOPT_AUTOREFERER,?1);
//setcookie('cookie_jar',?$cookie_jar);?//保存cookie路径
$data?=?curl_exec($curl);?//执行?
curl_close($curl);
return?$data;
要看你是同步还是异步了,异步的话,每次发送都要走三次握手,再计算总时间
你要快就同步,同时发1000台计算机,不用等每一次的返回是否正确.
以上就是土嘎嘎小编为大家整理的php向指定地址发送数据相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!