>接收指定IP的数据包,其他IP都要过滤吧,那就用防火墙来搞吧
使用的是client段的获取方式,用client的可以指定IP,代码大概如下
public void SendMessage()
{
ASCII = EncodingASCII;
// 构造用于发送的 字节缓冲
Byte[] sendBytes = ASCIIGetBytes(SEND_MESSAGE);
// 构造用于接收的 字节缓冲
Byte[] recvBytes = new Byte[256];
// IP地址
IPAddress localAddr = IPAddressParse("1921681981");
// 接入点
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(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);
try
{
// 尝试连接主机
sConnect(ephost);
//ConsoleWriteLine("向服务器发送到了:{0}", SEND_MESSAGE);
// 向主机发送数据
// sSend(sendBytes, sendBytesLength, SocketFlagsNone);
// 接收服务器的应答
Int32 bytes = sReceive(recvBytes, recvBytesLength, SocketFlagsNone);
StringBuilder buff = new StringBuilder();
// while (bytes > 0)
// {
// 将缓冲的字节数组,装换为字符串
// String str = ASCIIGetString(recvBytes, 0, bytes);
String str = "";
for (int i = 0; i < recvBytesLength; i++)
{
str = str + recvBytes[i];
}
int iCount = 0;
iCount = intParse(strSubstring(13, 6)) ;
// 加入字符串缓存
buffAppend(str);
// 再次接受,看看后面还有没有数据
//bytes = sReceive(recvBytes, recvBytesLength, SocketFlagsNone);
// }
textBox1Text = iCountToString();
}
catch (Exception ex)
{
MessageBoxShow("连接/发送/接收过程中,发生了错误!");
MessageBoxShow(exMessage);
//ConsoleWriteLine("连接/发送/接收过程中,发生了错误!");
//ConsoleWriteLine(exMessage);
//ConsoleWriteLine(exStackTrace);
}
finally
{
sClose();
}socket是一种数据结构,他可以用来在服务器和客户端进行对话。而curl是利用url语法规定来传输文件和数据的规定,支持很多协议,例如FTP,>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)