Программирование сокетов windows

Forums:

хорошая статья:
http://citforum.ru/book/cook/winsock.shtml

сервак=

// server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#pragma comment( lib, "ws2_32.lib" )
#include <Windows.h>
#include <conio.h>
#define len 20
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,0),&wsaData);
	SOCKET s[20];
	s[1] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	struct sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(2301);
	addr.sin_addr.s_addr= htonl(INADDR_ANY);

	bind(s[1], (SOCKADDR*)&addr, sizeof(addr));
	//if(listen(s[1], 1)) return 0;
	listen(s[1], 10); 
	int isize= sizeof(addr);
	SOCKET n[1];
	int m = 1;
	n[1] = accept(s[1], (struct sockaddr*)&addr, &isize);
	
	char buf[20];
	int i = 1;
	
	while(1) // "бесконечный" цикл
	{
		//m++;
		//s[6] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	//	bind(s[6], (SOCKADDR*)&addr, sizeof(addr));
	//	listen(s[6], 1);
	// accept(s[6], (struct sockaddr*)&addr, &isize);
		//if ((n[m] = accept(s, (struct sockaddr*)&addr, &isize)) == -1)
		//{
		// m--; 
		//}
//SOCKET n = accept(s, (struct sockaddr*)&addr, &isize);
		for (int i=1; i<2; i++)
		{
			recv(n[i], buf, len, 0);
			if(buf[0] != '9'){ // recv(n, buf, len, 0) != -1
				cout << buf << std::endl;
	     		buf[0] = '9'; // блокировка повторного вывода
			}
		}
		getchar();

		m++;
		n[m] = accept(s[1], (struct sockaddr*)&addr, &isize);
	} 


	shutdown(s[1],0);
	closesocket(s[1]);
	WSACleanup();
	_getch();
}


клиент:

// client.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <iostream>
#pragma comment( lib, "ws2_32.lib" )
#include <Windows.h>
#include <conio.h>
#define len 20


int _tmain(int argc, _TCHAR* argv[])
{
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,0),&wsaData);
	SOCKET s;
	
		s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	struct sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(2301);

	addr.sin_addr.s_addr= inet_addr("127.0.0.1");
	connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
	char buf[len];	
	

	while(int i = 1)
	{
		//connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
		printf("put any symbol to send a message to the server \n");
		getchar();
		strcpy(buf,"My message \n");
		send(s, buf,20,0);
    }
	
	
	shutdown(s,0);
	closesocket(s);
	WSACleanup();
	_getch();

}