Программирование сокетов windows
Primary tabs
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();
}
- Log in to post comments
- 3380 reads