在UdpClient类的构造函数中有一种重载的形式UdpClient(port),msdn中只解释说此处的port是用于通信的本地端口。我不太清楚这里设置的这个端口是在什么情况下才使用,是只用于本地接收时的监听端口,还是在发送时也从该端口发送?我现在有一主机只是发送数据包,不接收,那在使用UdpClient时还用设置这个本地端口吗?还有就是我在另一台主机上只接收这个主机发来的包,那么接收端的UdpClient在绑定远程的IPEndPoint时该如何设置端口?请高手解答,谢谢了。
调试欢乐多
public void Send(System.Net.IPAddress Host, int Port, byte[] Data)
{
try
{
IPEndPoint server = new IPEndPoint(Host, Port);
UDP_Server.Send(Data, Data.Length, server);
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
GSM类主要封装了操作短信猫的各种方法。using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace SMS.BaseClass
{
class GSM
{
//初始化gsm modem,并连接gsm modem
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemInitNew",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern bool GSMModemInitNew(
string device,
string baudrate,
string initstring,
string charset,
bool swHandshake,
string sn); //获取短信猫新的标识号码
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemGetSnInfoNew",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern string GSMModemGetSnInfoNew(string device, string baudrate); //获取当前通讯端口
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemGetDevice",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern string GSMModemGetDevice(); //获取当前通讯波特率
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemGetBaudrate",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern string GSMModemGetBaudrate(); //断开连接并释放内存空间
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemRelease",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern void GSMModemRelease(); //取得错误信息
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemGetErrorMsg",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern string GSMModemGetErrorMsg(); //发送短信息
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemSMSsend",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern bool GSMModemSMSsend(
string serviceCenterAddress,
int encodeval,
string text,
int textlen,
string phonenumber,
bool requestStatusReport); //接收短信息返回字符串格式为:手机号码|短信内容||手机号码|短信内容||
//RD_opt为1接收短信息后不做任何处理,0为接收后删除信息
[DllImport("dllforvc.dll",
EntryPoint = "GSMModemSMSReadAll",
CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.StdCall)]
public static extern string GSMModemSMSReadAll(int RD_opt);
}
}