作为服务器端,只需要知道自己需要监听的IP和端口号,就可以监听到前来通讯的服务器端。
可以使用一个结构体来封装TCP通讯所需要的参数。
static public Socket NewServer = null;
static public Socket NewClient = null;
public struct TcpSetPara
{
public IPAddress m_IP; //监听的IP
public int m_Port; //监听的Port
public UInt16 CommTCPTimeSet; //发送完报文后等待一段时间接收
}
接着初始化参数
public static void InitTcpPara()
{
m_TcpSetPara.CommTCPTimeSet = 200;
m_TcpSetPara.m_IP = GetIpAddress(); //获取当前主机的IP
m_TcpSetPara.m_Port = 502;
}
//获取当前主机的IP
public static IPAddress GetIpAddress()
{
string name = Dns.GetHostName();
string IpStr = "";
IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
foreach (IPAddress ipa in ipadrlist)
{
if (ipa.AddressFamily == AddressFamily.InterNetwork)
{
IpStr = ipa.ToString();
}
}
IPAddress ip = IPAddress.Parse(IpStr);
return ip;
}
启动连接,这里采用的是异步监听
st