我正在尝试为我的笔记本电脑制作一个应用程序,以防我忘记注销,我可以使用我的智能手机通过使用特定的应用程序来注销。所以我通常在想如果你有一个路由器......你有一个问题,因为你没有可以使用的外部IP和端口。为此,我使用此功能来获取外部 IP。
public string adresaIP()
{
UTF8Encoding utf8 = new UTF8Encoding();
WebClient clientWeb = new WebClient();
String adresaIP = utf8.GetString(clientWeb.DownloadData("http://bot.whatismyipaddress.com"));
return adresaIP;
}
但是当我尝试使用 te IpEndPoint 时它不起作用,它给了我一个异常错误,我不知道我做错了什么。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace bluetooth_LogOff
{
public partial class Form1 : Form
{
static byte[] buffer { get; set; }
static Socket soket;
public Form1()
{
InitializeComponent();
try
{
string ip = adresaIP();
soket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//soket.Bind(new IPEndPoint(IPAddress.Parse(ip),1234)); <<-- in this way dosen't work
soket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),1234)); // <<- in this way it works....
soket.Listen(100);
Socket accept = soket.Accept();
buffer = new byte[accept.SendBufferSize];
int bytesRead = accept.Receive(buffer);
byte[] format = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
format[i] = buffer[i];
}
string primescMesaj = Encoding.ASCII.GetString(format);
MessageBox.Show(primescMesaj);
soket.Close();
accept.Close();
}
catch (Exception messaj)
{
MessageBox.Show(messaj.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = adresaIP();
}
public string adresaIP()
{
UTF8Encoding utf8 = new UTF8Encoding();
WebClient clientWeb = new WebClient();
String adresaIP = `utf8.GetString(clientWeb.DownloadData("http://bot.whatismyipaddress.com"));`
return adresaIP;
}
}
}
但有趣的是,如果我输入像“127.0.0.1”这样的地址,它可以工作,但如果我输入字符串地址,它就不会