Вот некоторый SQL, который на самом деле имеет смысл:
SELECT m.id FROM match m LEFT JOIN email e ON e.id = m.id WHERE e.id IS NULL
Простой всегда лучше.
Если вам разрешено использовать классы MFC (CSocket), он может быть ближе к коду, который у вас есть в Java.
http://msdn.microsoft.com/en-us/library/wxzt95kb (VS.80) .aspx
В противном случае Winsock2 в порядке (MFC классы просто используют это в своей реализации).
Строгие байтовые массивы не нуждаются в переводе из Linux в Windows или другие системы. Однако если вы имеете дело с целыми числами и числами с плавающей запятой ...
Лично я бы использовал Poco :: BinaryWriter и Poco :: BinaryReader http://pocoproject.org/docs/Poco.BinaryWriter.html
using namespace Poco;
using namespace std;
std::ofstream myFile("path", ios::in | ios::binary);
BinaryWriter writer(myFile, BIG_ENDIAN_BYTE_ORDER);
writer << 10.0f;
writer << 10000;
//etc etc
myFile.close();
Теперь, чтобы прочитать
std::ifstream myFile("path", ios::in | ios::binary);
BinaryReader reader(myFile, BIG_ENDIAN_BYTE_ORDER);
int intVariable;
float floatVariable;
reader >> floatVariable;
reader >> intVariable;
//etc etc
myFile.close();
Я еще не работал с этим, но когда дело доходит до маршалинга более сложных структур данных, я бы посмотрел на усиление части сериализации.
Для фактической передачи данных winsock2 - это базовый api сокета в Windows, все остальные api построены на нем (ну, я не знаю о Windows 7). Но опять же, изучение boost может предоставить вам что-то независимое от платформы вам не нужно вычислять дважды. Но по моему опыту, сокеты - это сложные звери, так что вам все равно придется многое выяснить ...
И избегайте CSocket от MFC, это худшая реализация на свете. (Даже если некоторые говорят, что они исправили некоторые из неправильного поведения, это того не стоит.)