如何在mfc制作的聊天程序下实现发送图片

 时间:2024-10-12 05:56:32

1、首先,图片是一个文件,如果要发送到其它的设备,必须通过一种传方式实现发送,通常MFC聊天程序的发送多半是通过网络协议实现的,最简单的就是TCP\UDP\HTTP等,这些常用的网络协议,常用的协议参考下图所示

如何在mfc制作的聊天程序下实现发送图片

3、接下来,我们新建一个MFC示例工程,用来简单的实现TCP发送代码,工程创建过程如下图所示

如何在mfc制作的聊天程序下实现发送图片

4、这里只写出客户端的发送代码,接收端的接收实现原理其实也是一样的,只不过多了监听TCP链接的步骤

如何在mfc制作的聊天程序下实现发送图片

6、接下来,我把完整的发送代码写下来,实现TCP发送图片的功能,代码如下:FILE* pf = NULL; SOCKET conn = INVALID_SOCKET; WSADATA wsaData; struct hostent *hp; unsigned int addr; struct sockaddr_in server; int wsaret, len; char buffer[4096] = { 0 }; do { wsaret = WSAStartup(0x101, &wsaData); if (wsaret) break; conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conn == INVALID_SOCKET) break; addr = inet_addr("127.0.0.1"); hp = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET); if (hp == NULL) { break; } server.sin_addr.s_addr = *((unsigned long*)hp->h_addr); server.sin_family = AF_INET; server.sin_port = htons(20248); if (connect(conn, (struct sockaddr*)&server, sizeof(server))) { break; } pf = fopen("d:\\123.png", "rb"); if (pf == NULL) break; while (1) { len = fread(buffer, 1, 4096, pf); if (len <= 0) break; send(conn, buffer, len, 0); } } while (0); if (pf) fclose(pf); if (conn != INVALID_SOCKET) closesocket(conn);

如何在mfc制作的聊天程序下实现发送图片

7、这里需要注意一点就是,因为TCP是可靠的字节流式发送,如果使用同一个套接字发送,即发送图片也发送文本等,需要做好TCP的分包,不然后接收端无法识别数据内容

  • 貔貅如何摆放可以发挥最佳作用?
  • 百变大侦探三月三日剧本怎么玩
  • 密室逃脱21 遗落梦境 催眠海伦让她认罪 关攻略
  • 对接加油卡充值api接口分为几步?
  • 文件打开是乱码怎么办
  • 热门搜索
    扎尕那旅游攻略 舟山旅游景点大全 宁波旅游景点一日游 武汉旅游地图 北戴河旅游路线 江苏省旅游地图 辽阳旅游网 香格里拉旅游局 凉山旅游景点大全 廊坊旅游景点