求助:广域网TCP/IP通信
在网上找了TCP/IP通信的例子,用的TcpListener,TcpClient。逻辑比较简单。源码附后。测试情况:[都是在自己机器上测试]
请高手赐教啊
1,测试:
IP地址:127.0.0.1:正常
2,局域网IP:
IP地址:192.168.1.100:由于目标计算机积极拒绝,无法连接。 192.168.1.100:1000
3,广域网IP:
【尚不知获得广域网IP的代码是否正确】
登录路由器:192.168.1.1 转发规则-虚拟服务器 中 添加记录:192.168.1.100 :1000 All 生效
IP地址:115.196.222.139:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 115.196.222.139:1000
源码:
客户端**************************
TcpClient client = new TcpClient("IP地址", 1000);
NetworkStream sendStream = client.GetStream();
Byte[] sendBytes = Encoding.Default.GetBytes(str);
sendStream.Write(sendBytes, 0, sendBytes.Length);
sendStream.Close();
client.Close();
服务端**********************
client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
byte[] bytes = new byte[1024];
int bytesread = ns.Read(bytes, 0, bytes.Length);
收到字符串 = Encoding.Default.GetString(bytes, 0, bytesread);
ns.Close();
client.Close();
本机广域网IP*********************
广域网IP = GetOuterIP("http://www.);
string GetOuterIP(string url)
{
string page = GetPage(url);
string patt = @"IP: \[(?<IP>[0-9\.]*)\]";
Match match = Regex.Match(page, patt);
return match.Groups["IP"].Value;
}
static string GetPage(string url)
{
Uri uri = new Uri(url);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
using (StreamReader sr = new StreamReader(res.GetResponseStream()
/*, Encoding.GetEncoding("GB18030")*/))
return sr.ReadToEnd();
finally { req.Abort(); }
}