怎么接收任意远程ip和端口号程序,然后确定接收到的数据来自那个IP和端口号
如何接收任意远程ip和端口号程序,然后确定接收到的数据来自那个IP和端口号?
我想用GPRS模块向服务器端发送信息,服务器端也可以向GPRS下发命令。
想在GPRS模块端向固定域名和端口发数据,服务器端通过接收到的数据确定发送方的地址,
请问该如何确定发送方的地址和端口号呀?
IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] receiveByte = udp.Receive(ref ipendpoint);
string returnData = Encoding.Default.GetString(receiveByte);
想这样编程,可是接收不到数据。
我的GPRS端是可以主动发送心跳包的!
请会的帮帮忙,卡住了!拜托!拜托!
------解决方案--------------------
使用远程(例如另外一个省)的pc客户端能够访问到你的服务器吗?
写 IPEndPoint ipendpoint = null; 就行了,用不着 new 一个对象实例。
从手机通讯,最好使用 TCP 或者 HTTP,而不是 UDP。
------解决方案--------------------
无线也是一种方法,不是协议,照样在手机端写一个TCP的APP一样通讯啊
------解决方案--------------------
如果是IP层的包,可以试试fastCSharp,数据链路层的话需要些驱动或者winpcap
我想用GPRS模块向服务器端发送信息,服务器端也可以向GPRS下发命令。
想在GPRS模块端向固定域名和端口发数据,服务器端通过接收到的数据确定发送方的地址,
请问该如何确定发送方的地址和端口号呀?
IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] receiveByte = udp.Receive(ref ipendpoint);
string returnData = Encoding.Default.GetString(receiveByte);
想这样编程,可是接收不到数据。
我的GPRS端是可以主动发送心跳包的!
请会的帮帮忙,卡住了!拜托!拜托!
------解决方案--------------------
使用远程(例如另外一个省)的pc客户端能够访问到你的服务器吗?
写 IPEndPoint ipendpoint = null; 就行了,用不着 new 一个对象实例。
从手机通讯,最好使用 TCP 或者 HTTP,而不是 UDP。
------解决方案--------------------
无线也是一种方法,不是协议,照样在手机端写一个TCP的APP一样通讯啊
------解决方案--------------------
如果是IP层的包,可以试试fastCSharp,数据链路层的话需要些驱动或者winpcap
using System;
using fastCSharp;
namespace fastCSharp.demo.rawSocketListener
{
class Program
{
/// <summary>
/// 原始套接字监听
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
using (fastCSharp.net.rawSocketListener rawSocket = new fastCSharp.net.rawSocketListener(getPacket, System.Net.IPAddress.Parse("192.168.1.100")))
{
Console.ReadKey();
}
}
/// <summary>
/// 数据包处理
/// </summary>
/// <param name="data">数据包</param>
private static void getPacket(subArray<byte> data)
{
fastCSharp.net.packet.ip ip4 = new fastCSharp.net.packet.ip(data);
if (ip4.IsPacket)
{
switch (ip4.Protocol)
{
case fastCSharp.net.packet.ip.protocol.Icmp:
fastCSharp.net.packet.icmp icmp = new fastCSharp.net.packet.icmp(ip4.Packet);
if (icmp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString() + " " + icmp.Type.ToString() + " " + icmp.Code.ToString());
}
else Console.WriteLine("Unknown");
break;
case fastCSharp.net.packet.ip.protocol.Igmp:
fastCSharp.net.packet.igmp igmp = new fastCSharp.net.packet.igmp(ip4.Packet);
if (igmp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString());