读书人

简单sokcet有关问题 麻烦各位能帮忙看

发布时间: 2013-01-04 10:04:14 作者: rapoo

简单sokcet问题 麻烦各位能帮忙看一下

int _tmain(int argc, _TCHAR* argv[])
{
// 初始化 Winsock.
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf("Error at WSAStartup()\n");

// 建立socket socket.
SOCKET client;
client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( client == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return 0;
}

// 连接到服务器.
sockaddr_in clientService;

clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( "115.236.165.54" );
clientService.sin_port = htons(9999);

if (connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
printf( "Failed to connect.\n" );
WSACleanup();
return 0;
}

char sendbuf[1024];//发送缓冲区
int read;
DWORD dwRead;
BOOL bRet;
// 发送并接收数据.
char filename[]="G:\\test.mp4";
HANDLE hFile=CreateFile(filename,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
while(true)
{
bRet=ReadFile(hFile,sendbuf,1024,&dwRead,NULL);
printf("%d\n",dwRead);
if(bRet==FALSE)
{
printf("Read Buf ERROR!");
break;
}
else if(dwRead==0)
{
printf("Send file OK!");
break;
}
else
{
send(client,sendbuf,dwRead,0);
}

}
printf("send file OK!\n");
Sleep(1);
CloseHandle(hFile);
return 0;
}
麻烦大家帮忙看看windows下这个简单的发送文件的程序为什么发不了, 只发送276个字节就退出了。接收端是在linux系统上的,接受文件没有问题。哎。由于本人菜鸟,是在linux下写程序,对windows不熟啊。
[解决办法]
1、check下文件大小
2、看看dwRead读出来是多少
3、看看send返回多少

读书人网 >C++

热点推荐