wdynasty
驱动大牛
驱动大牛
  • 注册日期2003-10-10
  • 最后登录2011-04-07
  • 粉丝0
  • 关注0
  • 积分627分
  • 威望199点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
阅读:1174回复:4

谁有网络虚拟磁盘的源代码

楼主#
更多 发布于:2005-03-09 16:24
我自己用网上的代码改了一个,但启动是老是蓝屏,问题比较多
那位大虾能否共享一下,
21世纪是搜索的世界,看看BAIDU的股票就知道了。
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-09 17:15
蓝屏了可以慢慢调,这种东西蓝屏太正常了。
在交流中学习。。。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2005-03-09 21:09
把代码帖出来看看......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wdynasty
驱动大牛
驱动大牛
  • 注册日期2003-10-10
  • 最后登录2011-04-07
  • 粉丝0
  • 关注0
  • 积分627分
  • 威望199点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-09 22:21
这段代码:
客户端

   dStatus = TdiOpenTransport (                                      // open transport
                     L\"\\\\device\\\\udp\",                               // device name
                     CLIENT_PORT,                                        // port number
                     &hTdiTransport,                                 // return transport handle
                     &pTdiTransportObject );                         // return transport object
   
  if ( NT_SUCCESS ( dStatus ) )
   {
     dStatus = TdiQueryAddress ( pTdiTransportObject, &dTdiAddress );
      if ( NT_SUCCESS ( dStatus ) )
         DbgPrint ( \"Local IP Address = %X\\n\", dTdiAddress );
        else
       DbgPrint ( \"ERROR: unable to determine local IP address\\n\" );
     }
   else
       DbgPrint ( \"ERROR: open transport %X\\n\", dStatus );

//发送数据
NTSTATUS dStatus = STATUS_SUCCESS;
UCHAR pbData[20] = \"tdi is not so bad\";
dStatus = TdiSendDatagram (                                    // send datagram
                        pTdiTransportObject,                         // to transport
                        MY_PORT,                                     // port
                        dTdiAddress,                                 // address
                        pbData,                                      // data
                        sizeof ( pbData ) );                         // size
      if ( !NT_SUCCESS ( dStatus ) )
         DbgPrint ( \"ERROR: sending %X\\n\", dStatus );
         else
         DbgPrint ( \"send success\\n\" );
      
//接受数据
   ULONG dAddress;
   ULONG dSize;
   dSize = sizeof ( pbData );
   dStatus = TdiReceiveDatagram (
                        pTdiTransportObject,                         // to transport
                        MY_PORT,                                    // port
                        &dTdiAddress,                                   // address
                        pbData,                                      // buffer
                        &dSize );                                    // buffer size
      if ( NT_SUCCESS ( dStatus ) )
         DbgPrint ( \"TDI RECEIVE: %s\\n\", pbData );
      else
         DbgPrint ( \"ERROR: receiving %X\\n\", dStatus );
  

发送给服务端没问题,但是无法从服务端接受数据。为什么

服务端:
#define SRV_PORT 0x1000
#define CLIENT_PORT  0x1001
// create socket ...
s = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ( INVALID_SOCKET == s) {
printf(\"fail to create socket!\\n\");
goto err1;
}

// bind a local address with the socket ...
memset( &addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addr.sin_port = htons(SRV_PORT);
iRtn = bind( s, (const struct sockaddr *)(&addr), sizeof(addr));
if ( SOCKET_ERROR == iRtn) {
printf(\"fail to bind local address with socket!\\n\");
goto err2;
}

// serve CDB ...
while (TRUE) {

// recv CDB ...
len = sizeof(from);
iRtn = recvfrom( s, (char *)buf, sizeof(buf), 0, (struct sockaddr *)&from, &len);
if ( SOCKET_ERROR == iRtn) {
printf(\"fail to recv data!\\n\");
goto err2;
}

#ifdef _DEBUG
dumpCdb( buf);
#endif

// process CDB ...
/*if ( buf[0] >= SRB_HANDLERS_COUNT) {
HandleInvalidRequest(s, &from, fHandle, buf);
} else {
SrbHandlerArray[buf[0]](s, &from, fHandle, buf);
}*/
from.sin_port = htons(CLIENT_PORT);
sendto( s, (const char *)&pbData, \\
sizeof(pbData), 0, (struct sockaddr *)&from, sizeof(from));
}
21世纪是搜索的世界,看看BAIDU的股票就知道了。
wdynasty
驱动大牛
驱动大牛
  • 注册日期2003-10-10
  • 最后登录2011-04-07
  • 粉丝0
  • 关注0
  • 积分627分
  • 威望199点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-09 22:33
已经解决,谢谢各位。
21世纪是搜索的世界,看看BAIDU的股票就知道了。
游客

返回顶部