【发布时间】:2015-12-24 23:39:40
【问题描述】:
服务器:
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Parse("90.181.x.xxx"), 23466));
socket.Listen(1);
Socket accepteddata = socket.Accept();
data = new byte[accepteddata.SendBufferSize]; 6
int j = accepteddata.Receive(data);
byte[] adata = new byte[j];
for (int i = 0; i < j; i++)
adata[i] = data[i];
string dat = Encoding.Default.GetString(adata);
MessageBox.Show(dat);
和客户:
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
s.Connect(IPAddress.Parse("90.181.x.xxx"), 23466);
string q = "It work";
byte[] data = Encoding.Default.GetBytes(q);
s.Send(data);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
问题是当我的朋友连接到它时,他得到了错误。是的,我已经转发了端口。我已经将内部/外部端口开始/结束设置为 23466,并将 IP 地址设置为 192.168.1.1
【问题讨论】:
-
你服务器的 IP 很可能不是 192.168.1.1,这通常是你的路由器地址。在命令提示符中键入
ipconfig /all以查找您机器的IP 地址。我也不太确定您是否可以绑定到公共 IP 地址。请详细说明您的网络配置。 -
如果我输入 ipconfig / all 我得到 192.168.1.1 作为我的 ip 地址。我的公共 ip 是 90.181.0.0 从whatismypublicip.com 知道。
-
我建议您使用第三个程序分别测试您的服务器和客户端。 HW 集团的 Hercules 做得很好。将其与 Sysinternals TcpView 结合使用。