热情软件屋

 

如何用CSocket 来实现两台PC 之间的二进制数据传送


编号:QA001689
建立日期: 1999年9月9日 最后修改日期:1999年9月9日
所属类别:

佚名:
    如何用VC++ 提供的CSocket 来实现两台PC 之间的二进制数据传送 ? 举例来说,已知发送方 的内存里有一个640*480的字符型二进制数组, 如何用TCP/IP将其发送到收方PC的内存里所 设的同样的一个640*480的字符型二进制数组里?

回答:

    使用CSocket类来实现来实现两台机器之间二进制数据的传送, 程序可分为发送方和接受方,协议可选择TCP或者UDP.
    1.对于发送方一般可以不指定端口号:
    CSocket sckSend;
    sckSend.Create(0,SOCK_DGRAM);
    然后可以通过
    char data[xxx];
    sckSend.SendTo(data,xxx,recvPort,recvAddress);
    2.接受方需要定义端口号
    CSocket sckRecv;
    sckRecv.Create(recvPort,SOCK_DGRAM);
    sckRecv.ReceiveFrom(data,xxx,sendPort,semdAddress);
    
    当然数据量大时应该分开传送,而且最好采用异步方式,重载CSocket类在OnSend和OnReceive中处理发送和接收,也可以考虑多线程,但是需要注意,CSocket类不能很好的在多线程程序中运行,主要是因为CSocket类是基于窗口的,而在工作线程中没有相应窗口,应该使用用户界面线程。上面的例子是使用UDP协议的,TCP协议在使用前需要连接,服务器方先调用Listen等待连接,然后在OnAccept中连接,客户方用Connect连接后等待。OnConnect请参考MSDN。

此问题由Tengel回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio