socket_由於目標機器積極拒絕_無法連接的解決辦法


要在WEB上遠程管理客戶端軟件。那我們就仿路由器那種模式用SOCKET來解決吧。

做了個DEMO,本機測試OK,拿到別的機器上做服務器,提示由於目標機器積極拒絕,無法連接。

查詢各種資料,有的說是端口沒開,有的說是服務沒開。

各種霧水啊!仔細一想,問題可能出在本機在局域網IP上,而不是用127.0.0.1。

更正代碼后,問題解決。下面演示服務器端代碼的關鍵部分。

protected void Listen()

        {

 

MessageBox.Show("start listening");

stringip = "";

System.Net.IPHostEntryIpEntry = 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();

                }

            }

IPEndPointipend = 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];

intrecbyte = acc.Receive(buff, buff.Length, 0);

if (recbyte == 0)

break;

stringreciveval = "";

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()

    {

IPEndPointipend = 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];

intrecive = sc.Receive(rebuff, rebuff.Length, 0);

stringreturnval = "";

returnval += Encoding.GetEncoding("gb2312").GetString(rebuff, 0, recive);

sc.Close();

 

returnreturnval;

 

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM