Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2013, 22:44   #1
Nullerset
Пользователь
 
Регистрация: 01.02.2013
Сообщений: 27
По умолчанию Проблема с получением и отправкой сокетов.

Всем привет. Решил сделать консольный чат, все бы работало, но когда отправляю текст в любом случае приходит символ "P". В чем проблема вообще может быть?

Сервер:

Код:
#include <winsock2.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main(void)
{
    WORD v=MAKEWORD(2,0);
    WSADATA d;
    int e=WSAStartup(v,&d);
    if (e)
    {
        perror("error initializing winsock");
        return 1;
    }
    struct sockaddr_in local;
    int s;
    int s1;
    int rc;
    char buf[1024], text[1024];
    local.sin_family=AF_INET;
    local.sin_port=htons(1234);
    local.sin_addr.s_addr=htonl(INADDR_ANY);
    s=socket(AF_INET,SOCK_STREAM,0);
    if (s<0)
    {
        perror("error calling socket");
        return 1;
    }
    rc=bind(s,(struct sockaddr *)&local,sizeof(local));
    if (rc<0)
    {
        perror("error calling bind");
        return 1;
    }
    rc=listen(s,5);
    if (rc)
    {
        perror("error calling listen");
        return 1;
    }
    s1=accept(s,NULL,NULL);
    if (s1<0)
    {
        perror("error calling accept");
        return 1;
    }
    while (1==1)
      {
        rc=recv(s1,buf,1024,0);
        if (rc<=0)
          {
            perror("error calling recv");
            return 1;
          }
        printf("%c\n",buf);
        cout << "Text: ";
        cin >> text;
        rc=send(s1,text,1024,0);
        if (rc<=0)
          perror("error calling send");
        if (closesocket(s))
          perror("error calling closesocket");
        if (closesocket(s1))
          perror("error calling closesocket");
      }
    WSACleanup();
    
    return 0;
}
Клиент:

Код:
#include <winsock2.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(void)
{
    WORD v=MAKEWORD(2,0);
    WSADATA d;
    int e=WSAStartup(v,&d);
    if (e)
    {
        perror("error initializing winsock");
        return 1;
    }
    struct sockaddr_in peer;
    int s;
    int rc;
    char buf[1024], IP[14], text[1024];
    cout << "IP: ";
    cin >> IP;
    peer.sin_family=AF_INET;
    peer.sin_port=htons(1234);
    peer.sin_addr.s_addr=inet_addr(IP);
    s=socket(AF_INET,SOCK_STREAM,0);
    if (s<0)
    {
        perror("error calling socket");
        return 1;
    }
    rc=connect(s,(struct sockaddr *)&peer,sizeof(peer));
    if (rc)
    {
        perror("error calling connect");
        return 1;
    }
    while (1==1)
    {
    cout << "Text: ";
    cin >> text;
    rc=send(s,text,1024,0);
    if (rc<=0)
    {
        perror("error calling send");
        return 1;
    }
    rc=recv(s,buf,1024,0);
    if (recv<=0)
        perror("error calling recv");
    else
        printf("%c\n",buf);
    if (closesocket(s))
        perror("error calling closesocket");
    }
    WSACleanup();
    system("PAUSE >nul");
    return 0;
}

В чем проблема?



После ответа сервер вылетает, а клиент получает такой же символ "P".

Всем заранее спасибо.
Nullerset вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с получением IP адреса helldog Работа с сетью в Delphi 2 27.12.2011 20:03
Проблема с получением страницы shvabrin Работа с сетью в Delphi 1 28.11.2011 22:49
Проблема с получением диапазона Simbad Microsoft Office Excel 6 26.11.2011 10:49
Проблема с получением страницы lukinjj PHP 2 18.07.2010 21:03
Проблема с получением имени zumm Общие вопросы Delphi 3 14.05.2010 13:06