c++ 通过socket(网络套接字)传输图片(服务端)
2017-08-28 14:22
330 查看
先简单讲一下流程:
WinSock初始化->创建Socket->本地捆绑bind->监听listen->连接connect->传输receive->关闭close
#include<winSock2.h>//这个不要忘了
#pragmacomment(lib,"ws2_32.lib")
//提供了对以下网络相关API的支持
//若使用其中的API,则应该将ws2_32.lib加入工程
1:WinSock初始化
WORDwVersionRequested;//双字节;高字节存取副版本号,低字节存取高版本号。WSADATAwsaData;//一种结构,存取套接字实现的具体信息
wVersionRequested= MAKEWORD(2, 2);
result =WSAStartup(wVersionRequested, &wsaData);
if (result != 0)
{
printf("WSAStartup()failed!\n");
return 0;
}
2:创建Socket
sListen =socket(AF_INET, SOCK_STREAM, 0);if (sListen ==INVALID_SOCKET)
{
WSACleanup();
cout << "socket() faild!"<< endl;
return 0;
}
3:本地捆绑
structsockaddr_in saServer;saServer.sin_family= AF_INET; //地址家族
saServer.sin_port= htons(9210); //服务器端口
saServer.sin_addr.S_un.S_addr= htonl(INADDR_ANY); //服务器地址
length =sizeof(saServer);
result =bind(sListen, (struct sockaddr *)&saServer, length);
if (result ==SOCKET_ERROR)
{
cout << "bind() faild!code:" << WSAGetLastError() << endl;
closesocket(sListen);
WSACleanup();
return 0;
}
4:监听
result =listen(sListen, 5);if (result ==SOCKET_ERROR)
{
cout << "listen() faild!code:" << WSAGetLastError() << endl;
closesocket(sListen); //关闭套接字
return 0;
}
5:连接
length =sizeof(saClient);sConnect =accept(sListen, (struct sockaddr *)&saClient, &length);
if (sConnect ==INVALID_SOCKET)
{
cout << "accept() faild!code:" << WSAGetLastError() << endl;
closesocket(sListen); //关闭套接字
WSACleanup();
return 0;
}
6:传输
struct Data{
char message[2000];//消息
int rest;
}data;
while (1)
{
cout << "接收" << num++<< "信息" <<endl;
result = recv(sConnect, (char*)&data, sizeof(struct Data), 0);
if (result == SOCKET_ERROR)
{
printf("recv()failed!\n");
return 0;
}
if (result == 0) //客户端已经关闭连接
{
printf("Client has closed theconnection\n");
break;
}
receivePicture.write(data.message, 1024);
if (data.rest == 0){
cout << "over"<< endl;
break;
}
}
7:关闭
closesocket(sListen);closesocket(sConnect);
WSACleanup();
相关文章推荐
- c++ 通过socket(网络套接字)传输图片(客户端)
- android客户端和java服务端之间用socket来传输图片(示例代码)
- C++中用Socket实现对结构体、长字符串和图片的传输
- android客户端和java服务端之间用socket来传输图片
- C++中用Socket实现对结构体、长字符串和图片的传输
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- c#2005如何通过socket传输图片
- C++解析JSON进行网络传输--一个通过JSON方式的socket传输
- android客户端和java服务端之间用socket来传输图片(示例代码)
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- c#2005如何通过socket传输图片
- android客户端和java服务端之间用socket来传输图片
- android客户端和java服务端之间用socket来传输图片
- .NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- android客户端和java服务端之间用socket来传输图片
- socket通信——通过Udp传输方式,将一段文字数据发送出去
- Android开发-通过ADB+Socket实现USB数据传输
- 通过Intent传输图片导致广播消息异常的问题根因分析(通过分析Android源码反向推理)
- C++ 简单Socket服务端代码实现