上传文件到FTP服务器上,在局域网中没有问题,但是在广域网中不行
因为是CS结构,而且是framework1.0,所以自己做了一个ftp客户端,但是在局域网中测试没有问题,到广域网中如果不设置断点执行,机器就处于没有反应状态,单步跟踪时,有时没有问题,有时也是没有反应。怀疑可能与网络有关,也可能是连接超时,或者是socket取值、传输的问题。请帮忙指点!谢谢!连接相关代码如下:public void Connect(){
socketControl = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(RemoteHost), strRemotePort);
// 链接
try
{
socketControl.Connect(ep);
}
catch(Exception)
{
throw new IOException("Couldn't connect to remote server");
} // 获取应答码
ReadReply();
if(iReplyCode != 220)
{
DisConnect();
throw new IOException(strReply.Substring(4));
} // 登陆
SendCommand("USER "+strRemoteUser);
if( !(iReplyCode == 331 || iReplyCode == 230) )
{
CloseSocketConnect();//关闭连接
throw new IOException(strReply.Substring(4));
}
if( iReplyCode != 230 )
{
SendCommand("PASS "+strRemotePass);
if( !(iReplyCode == 230 || iReplyCode == 202) )
{
CloseSocketConnect();//关闭连接
throw new IOException(strReply.Substring(4));
}
}
bConnected = true; // 切换到目录
ChDir(strRemotePath);
}
private void ReadReply()
{
strMsg = "";
strReply = ReadLine();
iReplyCode = Int32.Parse(strReply.Substring(0,3));
}
private string ReadLine()
{
while(true)
{
int iBytes = socketControl.Receive(buffer, buffer.Length, 0);
strMsg += ASCII.GetString(buffer, 0, iBytes);
if(iBytes < buffer.Length)
{
break;
}
}
char[] seperator = {'\n'};
string[] mess = strMsg.Split(seperator);
if(strMsg.Length > 2)
{
strMsg = mess[mess.Length-2];
//seperator[0]是10,换行符是由13和0组成的,分隔后10后面虽没有字符串,
//但也会分配为空字符串给后面(也是最后一个)字符串数组,
//所以最后一个mess是没用的空字符串
//但为什么不直接取mess[0],因为只有最后一行字符串应答码与信息之间有空格
}
else
{
strMsg = mess[0];
}
if(!strMsg.Substring(3,1).Equals(" "))//返回字符串正确的是以应答码(如220开头,后面接一空格,再接问候字符串)
{
return ReadLine();
}
return strMsg;
} --------------------编程问答-------------------- socketControl.SendTimeout = 3000; // 设置好超时,否则可能持续等待
socketControl.ReceiveTimeout = 3000; --------------------编程问答-------------------- 学习一下....
补充:.NET技术 , C#