服务器端:
tcpListener = new TcpListener(IPAddress.Any, 8080);
//开始侦听
tcpListener.Start();
//返回可以用以处理连接的Socket实例
MySocket = tcpListener.AcceptSocket(); //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (MySocket.Connected)
{
thread = new Thread(new ThreadStart(ThreadProc));
thread.Start();
}
客户端:
try
{
ServerIP = new IPEndPoint(hostIPAddress, Int32.Parse(port));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ServerIP); thread = new Thread(new ThreadStart(get));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
catch
{
this.display("连接失败!");
return -1;
}
private void get()
{
string strRecv = "";
//接收银行方发送过来的数据
Byte[] ByteRecv = new byte[1024]; while (socket.Connected == true)
{
……
}
}问题是:无论我的ServerIP是否正确(即使不存在的IP),乃至我服务器端程序不启动(客户端和服务器端都在本机),在运行到get()的时候,第一次条件判断socket.Connected == true 总是成立的,也就是说socket.Connected总是为true,为什么会这样?是socket属性没有配置正确么?
请大虾指点一下。
tcpListener = new TcpListener(IPAddress.Any, 8080);
//开始侦听
tcpListener.Start();
//返回可以用以处理连接的Socket实例
MySocket = tcpListener.AcceptSocket(); //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (MySocket.Connected)
{
thread = new Thread(new ThreadStart(ThreadProc));
thread.Start();
}
客户端:
try
{
ServerIP = new IPEndPoint(hostIPAddress, Int32.Parse(port));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ServerIP); thread = new Thread(new ThreadStart(get));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
catch
{
this.display("连接失败!");
return -1;
}
private void get()
{
string strRecv = "";
//接收银行方发送过来的数据
Byte[] ByteRecv = new byte[1024]; while (socket.Connected == true)
{
……
}
}问题是:无论我的ServerIP是否正确(即使不存在的IP),乃至我服务器端程序不启动(客户端和服务器端都在本机),在运行到get()的时候,第一次条件判断socket.Connected == true 总是成立的,也就是说socket.Connected总是为true,为什么会这样?是socket属性没有配置正确么?
请大虾指点一下。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货