您的位置:首页 > 职场人生

【黑马程序员】Socket编程实现内网连接的问题

2013-09-24 21:32 375 查看
---------------------- 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培训、期待与您交流!
----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: