我正在使用Visual Studio Ultimate 2013。
我在C ++中使用winsock API开发了一个简单的客户端和服务器应用程序,客户端向服务器发送hello消息。但是,我想从客户端套接字一次向服务器发送多个图像。我不知道如何使用套接字编程发送图像文件。请帮我一起使用winsock发送多个图像文件。
我的代码如下:
客户端:
#include <iostream>
#include <winsock2.h>
using namespace std;
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")
static void ClientApp()
{
WSADATA WSAData;
SOCKET server;
SOCKADDR_IN addr;
WSAStartup(MAKEWORD(2, 0), &WSAData);
server = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_addr.s_addr = inet_addr("192.168.100.4");
addr.sin_family = AF_INET;
addr.sin_port = htons(5555);
connect(server, (SOCKADDR *)&addr, sizeof(addr));
cout << "Connected to server!" << endl;
char buffer[1024] = { 'h', 'e', 'l', 'l', 'o', '.' };
send(server, buffer, sizeof(buffer), 0);
cout << "Message sent!" << endl;
closesocket(server);
WSACleanup();
cout << "Socket closed." << endl << endl;
}
int main()
{
ClientApp();
}
服务器:
#include <iostream>
#include <winsock2.h>
using namespace std;
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
static void ServerApp()
{
WSADATA WSAData;
SOCKET server, client;
SOCKADDR_IN serverAddr, clientAddr;
WSAStartup(MAKEWORD(2, 0), &WSAData);
server = socket(AF_INET, SOCK_STREAM, 0);
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(5555);
bind(server, (SOCKADDR *)&serverAddr, sizeof(serverAddr));
listen(server, 0);
cout << "Listening for incoming connections..." << endl;
char buffer[1024];
int clientAddrSize = sizeof(clientAddr);
if ((client = accept(server, (SOCKADDR *)&clientAddr, &clientAddrSize)) != INVALID_SOCKET)
{
cout << "Client connected!" << endl;
recv(client, buffer, sizeof(buffer), 0);
cout << "Client says: " << buffer << endl;
memset(buffer, 0, sizeof(buffer));
closesocket(client);
cout << "Client disconnected." << endl;
}
}
int main()
{
ServerApp();
}