如何用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回答。
| |
|
|
| |
|
|