proliger
Сообщений: 1
Оценки: 0
Присоединился: 2009-12-17 20:05:51.153333
|
Задача : Нужно чтобы к одному серверу подключалось 2 клиента(как сделать так чтобы к серверу подключался 1 клиент я разобрался) и Обменялись сообщениями Имеется : Уже готовый клиент , сервер (только для 1 клиента) , и потоки(как образец) Исходные коды : Сервер // serv.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <sys/types.h>
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"netapi32.lib")
int main(int argc, char* argv[])
{
struct sockaddr_in local;
SOCKET s , s1;
int rc;
const int ar = 10;
const int arr = 12;
char buf[arr];
char bub [ar]={ 'm','a','m','a',' ','p','a','p','a'};
WSADATA wsaData;
int wsaret = WSAStartup(0x101,&wsaData);
if(wsaret != 0)
{
return 0;
}
local.sin_family = AF_INET;
local.sin_port = htons(7500);
local.sin_addr.s_addr = htonl(INADDR_ANY);
s = socket (AF_INET, SOCK_STREAM,0);
if (s < 0)
{
perror("fail socket");
return 1;
}
struct sockaddr *ss = ( sockaddr *)&local;
int size_str = sizeof (local);
rc = bind(s,ss,size_str);
if(rc < 0)
{
perror("fail bind");
}
rc = listen (s,5);
if(rc < 0)
{
perror("fail listen");
}
s1 = accept(s,NULL,NULL);
if(s1 < 0)
{
perror("fail accept");
}
if (s1 > 0)
{
perror("s1 accept");
}
//////////////////////////////////////////
rc = recv(s1,buf,14,0);
if(rc <= 0)
{
perror("fail recv") ;
}
else
{
cout << "Send from client " ;
cout << buf << endl;
}
rc = send(s1,bub,10,0);
if(rc <= 0)
{
perror("fail send");
return 1;
}
else
{cout << "Send to client " ;
cout << bub << endl;
}
return 0;
}
Клиент Я думаю выкладывать не стоит , там все нормально. Потоки Если нужно то выложу. Решение проблемы : Проблему нужно решить приблизительно вот в этой области if (s1 > 0)
{
perror("s1 accept");
} Через функцию CreateThread(); Вопрос как это можно осуществить ?
|