论坛徽章: 0
10 可用积分
int main( )
{
int iret;
WSADATA wsa;
SOCKET sock;
struct sockaddr_in sin ;
//i = 0;
//sethttphead("/xml/nj/2680.xml","image.veegoo.com");
sethttphead( "/research/papers/Survy03-10.doc" , "mes.nju.edu.cn" ) ;
if ( WSAStartup( MAKEWORD( 2, 2) , & wsa) )
{
printf ( "WSAStartup Error: %d\n" , WSAGetLastError( ) ) ;
getche( ) ;
return - 1;
}
if ( ( sock= socket ( AF_INET , SOCK_STREAM , IPPROTO_TCP ) ) = = INVALID_SOCKET)
{
printf ( "Socket Error: %d\n" , WSAGetLastError( ) ) ;
getche( ) ;
return - 1;
}
sin . sin_family= AF_INET ;
sin . sin_port= htons ( port) ;
serveraddr = host2ip( "mes.nju.edu.cn" ) ;
cout < < serveraddr < < endl ;
sin . sin_addr. s_addr= inet_addr( serveraddr. c_str( ) ) ;
if ( connect ( sock, ( struct sockaddr * ) & sin , sizeof ( sin ) ) = = SOCKET_ERROR)
{
printf ( "Connect Error: %d\n" , WSAGetLastError( ) ) ;
printf ( "请检测网络连接!\n" ) ;
getche( ) ;
return - 1;
}
if ( ( iret= send ( sock, msg, sizeof ( msg) , 0) ) = = SOCKET_ERROR)
{
printf ( "Send Error: %d\n" , WSAGetLastError( ) ) ;
getche( ) ;
return - 1;
}
memset ( pagetext, 0, BUFFER_SIZE) ;
int current = 0;
while ( true )
{
i+ + ;
memset ( buffer, 0, 8192) ;
if ( ( iret= recv ( sock, buffer, 8192, 0) ) = = SOCKET_ERROR)
{
printf ( "Recv Error: %d\n" , WSAGetLastError( ) ) ;
getche( ) ;
return - 1;
}
memcpy ( pagetext+ current, buffer, iret) ;
current + = iret;
if ( buffer[ 0] = = 0)
{
break ;
}
}
pagetext[ current+ 1] = '\0' ;
save2file( pagetext, "3.txt" ) ;
//----------------------------------------------
closesocket( sock) ;
WSACleanup( ) ;
getche( ) ;
return 0;
}
目前是在win下,即将移植到Linux下
可是下载文件就是不对
大家给点方法
主要是 接收文件以后 第一个包包含包头
如何区别包头以及后面得数据问题
谢谢
我来回答