|
在vxworks下一个ftpclient程序,需要支持断点续传。现在有个问题是怎么判断client端与server端的意外网络中断。我写的实验室代码如下:(还没有加断点续传的东西,很简单的测试)。
if ((ctrlSock = ftpHookup(UNIX_HOST)) == ERROR)
{
perror("ftpHookup error!") ;
return ERROR ;
}
if ((ftpLogin (ctrlSock, USER, PASSWD, "") == ERROR))
{
perror("ftpLogin error!") ;
return ERROR ;
}
if (( ftpCommand (ctrlSock, "TYPE I", 0, 0, 0, 0, 0, 0)) != FTP_COMPLETE)
{
perror ("TYPE FTP command positive completion failed");
}
if (( ftpCommand (ctrlSock, "CWD ", 0, 0, 0, 0, 0, 0)) != FTP_COMPLETE)
{
perror ("TYPE FTP command positive completion failed");
}
if ((dataSock = ftpDataConnInit(ctrlSock)) == ERROR)
{
perror("ftpDataConnInit error") ;
}
if ((i = ftpCommand (ctrlSock, "REST %d", 1000, 0, 0, 0, 0, 0)) != FTP_COMPLETE)
{
perror ("LIST FTP command positive completion failed");
}
if ((i = ftpCommand (ctrlSock, "RETR %s", fileName, 0, 0, 0, 0, 0)) != FTP_COMPLETE)
{
perror ("LIST FTP command positive completion failed");
}
if ((dataSock = ftpDataConnGet(dataSock)) == ERROR)
{
perror("ftpDataConnGet error") ;
}
while( (numBytes = read(dataSock,cc, sizeof(cc) )) > 0)
{
i += numBytes ;
printf("i = %d \n" , i ) ;
}
close(dataSock);
printf("i = %d \n" , i);
if (ftpCommand (ctrlSock, QUIT_CMND, 0, 0, 0, 0, 0, 0) != FTP_COMPLETE)
{
perror ("QUIT FTP command positive completion failed");
return (ERROR);
}
close (ctrlSock);
return OK;
以拔掉网线作为意外的网络中断事件,每次拔掉网线后,程序就在红色代码处阻塞。请问怎么解决这个问题。
只要能判断意外的网络中断事件。
|
|