网站建设资讯

NEWS

网站建设资讯

php向指定ip发送数据 php发送post

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

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

创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信平台小程序开发,10余年建站对阳台护栏等多个方面,拥有丰富的网站设计经验。

使用的是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();

}

如何通过向指定的IP发送信息

1、要想实现给局域网中其它电脑发消息,首先需要开启“AllowRemoteRPC”功能。打开“运行”对话框(按Win+R可打开),输入“Regedit”打开注册表编辑器。

2、在注册表中依次展开【hkey_local machine】--- 【system】---【CurrentControlSet】----【Control】---- 【terminal server】在右侧窗口中找【AllowRemoteRPC】项。

3、双击【AllowRemoteRPC】项,在弹出的编辑窗口中,将其数值改为1,点击“确定”完成设置。

4、接下来需要知道对方电脑的IP及登陆用户名和密码信息。然后打开“控制面板”,点击“凭证管理器”项进入。

5、接着在打开的“凭证管理器”窗口中,点击“添加Windows凭证”按钮进入。

6、接下来输入要发送信息的对方电脑的IP地址,以及登陆用户名和密码,点击“确定”完成添加凭证操作。

7、接下来打开“Windows防火墙”,进入“允许Windows或程序通过防火墙”项进入。

在打开的“允许程序通过Windows防火墙进行通信”列表中,勾选“Message Queuing”项。

8、最后就可以使用“MSG”命令给指定IP主机发消息啦。

9、格式为“Msg /server:IP * "消息内容”。

怎么向某个特定的IP和MAC地址发送数据包

使用socket编程即可。

1、网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

2、下面用Socket实现一个windows下的c语言socket通信例子,这里客户端传递一个字符串,服务器端进行接收。

【服务器端】

#include “stdafx.h”

#include stdio.h

#include winsock2.h

#include winsock2.h

#define SERVER_PORT 5208 //侦听端口

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int ret, nLeft, length;

SOCKET sListen, sServer; //侦听套接字,连接套接字

struct sockaddr_in saServer, saClient; //地址信息

char *ptr;//用于遍历信息的指针

//WinSock初始化

wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本

ret=WSAStartup(wVersionRequested, wsaData);

if(ret!=0)

{

printf(“WSAStartup() failed!\n”);

return;

}

//创建Socket,使用TCP协议

sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sListen == INVALID_SOCKET)

{

WSACleanup();

printf(“socket() faild!\n”);

return;

}

//构建本地地址信息

saServer.sin_family = AF_INET; //地址家族

saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序

saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址

//绑定

ret = bind(sListen, (struct sockaddr *)saServer, sizeof(saServer));

if (ret == SOCKET_ERROR)

{

printf(“bind() faild! code:%d\n”, WSAGetLastError());

closesocket(sListen); //关闭套接字

WSACleanup();

return;

}

//侦听连接请求

ret = listen(sListen, 5);

if (ret == SOCKET_ERROR)

{

printf(“listen() faild! code:%d\n”, WSAGetLastError());

closesocket(sListen); //关闭套接字

return;

}

printf(“Waiting for client connecting!\n”);

printf(“Tips: Ctrl+c to quit!\n”);

//阻塞等待接受客户端连接

while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。

{

length = sizeof(saClient);

sServer = accept(sListen, (struct sockaddr *)saClient, length);

if (sServer == INVALID_SOCKET)

{

printf(“accept() faild! code:%d\n”, WSAGetLastError());

closesocket(sListen); //关闭套接字

WSACleanup();

return;

}

char receiveMessage[5000];

nLeft = sizeof(receiveMessage);

ptr = (char *)receiveMessage;

while(nLeft0)

{

//接收数据

ret = recv(sServer, ptr, 5000, 0);

if (ret == SOCKET_ERROR)

{

printf(“recv() failed!\n”);

return;

}

if (ret == 0) //客户端已经关闭连接

{

printf(“Client has closed the connection\n”);

break;

}

nLeft -= ret;

ptr += ret;

}

printf(“receive message:%s\n”, receiveMessage);//打印我们接收到的消息。

}

// closesocket(sListen);

// closesocket(sServer);

// WSACleanup();

}

【客户端】

#include “stdafx.h”

#include stdio.h

#include stdlib.h

#include winsock2.h

#define SERVER_PORT 5208 //侦听端口

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int ret;

SOCKET sClient; //连接套接字

struct sockaddr_in saServer; //地址信息

char *ptr;

BOOL fSuccess = TRUE;

//WinSock初始化

wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本

ret = WSAStartup(wVersionRequested, wsaData);

if(ret!=0)

{

printf(“WSAStartup() failed!\n”);

return;

}

//确认WinSock DLL支持版本2.2

if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2)

{

WSACleanup();

printf(“Invalid WinSock version!\n”);

return;

}

//创建Socket,使用TCP协议

sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sClient == INVALID_SOCKET)

{

WSACleanup();

printf(“socket() failed!\n”);

return;

}

//构建服务器地址信息

saServer.sin_family = AF_INET; //地址家族

saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序

saServer.sin_addr.S_un.S_addr = inet_addr(“192.168.1.127”);

//连接服务器

ret = connect(sClient, (struct sockaddr *)saServer, sizeof(saServer));

if (ret == SOCKET_ERROR)

{

printf(“connect() failed!\n”);

closesocket(sClient); //关闭套接字

WSACleanup();

return;

}

char sendMessage[]=“hello this is client message!”;

ret = send (sClient, (char *)sendMessage, sizeof(sendMessage), 0);

if (ret == SOCKET_ERROR)

{

printf(“send() failed!\n”);

}

else

printf(“client info has been sent!”);

closesocket(sClient); //关闭套接字

WSACleanup();

}

PHP发送数据到IP TCP/UDP

php是脚本语言,估计无法实现你这个愿望。

以前的高手是通过CGI来实现的,就是因为CGI是应用程序,安全性不好,所以后来才流行PHP这类脚本语言的(就好像以前电脑上都是administrator,现在都是用户自己的账户了一样)。


标题名称:php向指定ip发送数据 php发送post
分享URL:http://cdweb.net/article/ddsjhdo.html