От всей души вкладываю примитивный исходник, рабочий, проверял в связке с флэшем:
Код:
#include <iostream>
using namespace std;
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")
#pragma comment (lib, "mswsock.lib")
void main(void) {
char PCName [30], ClientName[30], Message[200];
WSAData WSADat; // Свойства WinSock (результат функции WSAStartup)
sockaddr_in sin; // Свойства(адрес) создаваемого сокета
SOCKET Sock, Client; // Серверный и клиентский сокеты
WSAStartup(0x0202,&WSADat); // Инициализация WinSock
// 0x0202 - версия WinSock. Может быть 1.0, 1.1, 2.0, 2.2
// WSADat - структура, куда будут занесены рез. инициализации
gethostname(PCName, 30); // Получение имени текущего ПК
sin.sin_family = AF_INET; // Тип адреса
sin.sin_addr.s_addr = 0; // IP-адрес сервера (пори создании сервера можно 0)
sin.sin_port = htons(2803); // Номер порта сервера
Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Создание сокета
bind(Sock, (sockaddr*)&sin, sizeof(sin)); // Связывание созданного сокета с адресом sin
// ***** Ожиданеи клиента
cout << "Wait of client..." << endl;
listen(Sock, SOMAXCONN); // Прослушивание сокета сервером (для подключения клиента)
Client = accept(Sock, (sockaddr*)&sin, 0); // Ожидание клиента
recv(Client, ClientName, 30, 0); // Получение имени компьютера клиента
send(Client, PCName, strlen(PCName) + 1, 0); // Отправка имени этого компьютера (сервера)
cout << "Client ( " << ClientName << " ) has connected!" << endl;
// ***** Меню
int Menu;
do {
cout << "1. Send message;" << endl;
cout << "2. Get Message;" << endl;
cout << "3. Quit;" << endl;
cout << "Make your selection: "; cin >> Menu;
switch (Menu) {
case 1:
// Отправка сообщения клиенту
cout << "Enter message: "; cin.get();
cin.getline(Message, 200);
if (send(Client, Message, strlen(Message) + 1, 0) != SOCKET_ERROR) cout << "Sent!\n";
else cout << "Error of sending!\n";
break;
case 2:
// Приём сообщения от клиента
if (recv(Client, Message, 200, 0) != SOCKET_ERROR) {
cout << Message << endl;
cin.get();
}
else cout << "Error of getting!\n";
break;
};
cout << endl;
} while (Menu != 3);
// Закрытие сокетов и окончание работы с WinSock
closesocket(Sock);
closesocket(Client);
WSACleanup();
}
Компилил под MS VS C++ 2005 Express. Полегчало?
.
Да, хорошо бы подковаться малость, а то опять тема получится никакая.