socket 由于目标机器积极拒绝,无法连接的解决办法
2012-03-29 17:02
736 查看
客户最近提出一个需求,要在WEB上远程管理客户端软件。那我们就仿路由器那种模式用SOCKET来解决吧。做了个DEMO,本机测试OK,拿到别的机器上做服务器,提示由于目标机器积极拒绝,无法连接。查询各种资料,有的说是端口没开,有的说是服务没开。各种雾水啊!仔细一想,问题可能出在本机在局域网IP上,而不是用127.0.0.1。更正代码后,问题解决。下面演示服务器端代码的关键部分。
protected void Listen()
{
MessageBox.Show("start listening");
string ip = "";
System.Net.IPHostEntry IpEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
for (int i = 0; i != IpEntry.AddressList.Length; i++)
{
if (!IpEntry.AddressList[i].IsIPv6LinkLocal)
{
ip= IpEntry.AddressList[i].ToString();
}
}
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ip), 8000);
Socket sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sc.Bind(ipend);
Socket acc;
while (true)
{ sc.Listen(1);
acc= sc.Accept();
byte[] buff = new byte[1024];
int recbyte = acc.Receive(buff, buff.Length, 0);
if (recbyte == 0)
break;
string reciveval = "";
reciveval += Encoding.GetEncoding("gb2312").GetString(buff, 0, recbyte);
string returnval = "开始升级";
byte[] returnBy = Encoding.GetEncoding("gb2312").GetBytes(returnval);
acc.Send(returnBy, returnBy.Length, 0);
}
acc.Close();
sc.Close();
}
客户端
public string sendMessage()
{
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse("192.168.XXX.XXX"),8000);
Socket sc = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sc.Connect(ipend);
string message = "请升级软件";
byte[] bt = Encoding.GetEncoding("gb2312").GetBytes(message);
sc.Send(bt,bt.Length,0);
byte[] rebuff = new byte[1024];
int recive = sc.Receive(rebuff, rebuff.Length, 0);
string returnval = "";
returnval += Encoding.GetEncoding("gb2312").GetString(rebuff, 0, recive);
sc.Close();
return returnval;
}
protected void Listen()
{
MessageBox.Show("start listening");
string ip = "";
System.Net.IPHostEntry IpEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
for (int i = 0; i != IpEntry.AddressList.Length; i++)
{
if (!IpEntry.AddressList[i].IsIPv6LinkLocal)
{
ip= IpEntry.AddressList[i].ToString();
}
}
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ip), 8000);
Socket sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sc.Bind(ipend);
Socket acc;
while (true)
{ sc.Listen(1);
acc= sc.Accept();
byte[] buff = new byte[1024];
int recbyte = acc.Receive(buff, buff.Length, 0);
if (recbyte == 0)
break;
string reciveval = "";
reciveval += Encoding.GetEncoding("gb2312").GetString(buff, 0, recbyte);
string returnval = "开始升级";
byte[] returnBy = Encoding.GetEncoding("gb2312").GetBytes(returnval);
acc.Send(returnBy, returnBy.Length, 0);
}
acc.Close();
sc.Close();
}
客户端
public string sendMessage()
{
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse("192.168.XXX.XXX"),8000);
Socket sc = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sc.Connect(ipend);
string message = "请升级软件";
byte[] bt = Encoding.GetEncoding("gb2312").GetBytes(message);
sc.Send(bt,bt.Length,0);
byte[] rebuff = new byte[1024];
int recive = sc.Receive(rebuff, rebuff.Length, 0);
string returnval = "";
returnval += Encoding.GetEncoding("gb2312").GetString(rebuff, 0, recive);
sc.Close();
return returnval;
}
相关文章推荐
- socket 由于目标机器积极拒绝,无法连接的解决办法
- Unity(C#.net)网络通信问题解决(服务器开启失败,Socket下的“由于目标机器积极拒绝,无法连接”异常)
- 关于 TortoiseSVN:由于目标机器积极拒绝,无法连接,的一种解决办法
- 由于目标机器积极拒绝,无法连接__解决办法_SVN
- 由于目标机器积极拒绝,无法连接__解决办法_SVN
- sqlserver关于错误“ provider: TCP 提供程序, error: 40 - 由于目标机器积极拒绝,无法连接”的解决
- SVN错误:由于目标机器积极拒绝,无法连接 的解决方法
- SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
- apache ab 测试 apr_socket_connect(): 由于目标机器积极拒绝 无法连接
- Socket 连接异常 之"由于目标机器积极拒绝,无法连接" 的诊断
- apache ab 测试 apr_socket_connect(): 由于目标机器积极拒绝 无法连接
- Socket 连接"由于目标机器积极拒绝,无法连接" 的诊断
- SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
- 【转】SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
- winsock 错误 0x0000274d 由于目标机器积极拒绝,无法连接问题解决
- 解决:“TortoiseSVN访问时候出现 Error: Can't connect to ...由于目标机器积极拒绝,无法连接”
- apache ab 测试 apr_socket_connect(): 由于目标机器积极拒绝 无法连接
- SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
- Socket 连接异常 之"由于目标机器积极拒绝,无法连接" 的诊断
- winsock 错误 0x0000274d 由于目标机器积极拒绝,无法连接问题解决