---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
利用Socket编程实现内网的客户端和服务端的连接时出现了一个问题。主界面如图所示:
点击启动服务按钮,执行的主要代码如下:
private void btnBeginListen_Click(object sender, EventArgs e)
{
//创建服务器端负责监听的套接字,参数(使用IP4寻址协议,使用流式连接,使用TCP协议传输数据)
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//用文本框中的IP地址创建一个IP地址对象IPAddress
IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
//创建一个包含IP地址和端口的网络节点对象
IPEndPoint endpoint = new IPEndPoint(address, int.Parse(txtPort.Text.Trim()));
//把网络节点对象绑定到负责监听的Socket上
listenSocket.Bind(endpoint);
//设置监听队列的长度,也就是当前可以同时监听的请求次数
listenSocket.Listen(10);
//开始监听客户端的连接请求
Socket connSocket = listenSocket.Accept();
ShowMsg("客户端连接成功!");
}
private void ShowMsg(string message)
{
txtShow.Text = message + "\r\n";
}
程序运行结果却是报错了,如下图:
报错信息说,请求的地址无效。这是什么原因呢?根据字面意思是IP地址出错了,可这个地址就是本机的IP地址啊。查了半天,原来我给的那个IP地址是联网时的IP地址,根本就不是本机的内网IP。按下“Windows+R”键,输入cmd打开命令窗口,在窗口中输入ipconfig命令,查询本机的IP(也就是ipv4)。纠正后,重新启动程序,再在命令窗口中连接这个服务程序。结果如图所示:
上网搜了一下,原来Windows7不会自动安装运行Telnet服务,所以我们需要手动打开Telnet服务。打开控制面板,打开“程序”,并点击“打开或关闭Windows功能”,勾选“Telnet客户端”就可以了,如下图所示:
点击确定按钮,启动Telnet服务。再运行程序,点击启动服务按钮,我们可以发现窗体无法移动,因为当前主线程被占用,正在等待和监听客户端的连接请求。我们在“命令窗口”里面输入以下命令:telnet 10.12.10.99 1000,然后这个程序就可以从客户端正常连接了。如图所示:
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------