首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-04 
简单sokcet问题麻烦各位能帮忙看一下int _tmain(int argc, _TCHAR* argv[]){// 初始化 Winsock.WSADATA ws

简单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返回多少

热点排行