Показать сообщение отдельно

  #4  
Старый 11.07.2008, 17:10
SVAROG
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме:
2706059

Репутация: 206
По умолчанию

недавно начал изучать с++, решил написать клиент -сервер, задача программы: в клиенте написать строку и что бы она выводилась на сервере.
всё компилируеться и запускаеться но почему то не работает, подскажите где ошибся
код сервера:
PHP код:
#include "stdafx.h"
#include <winsock2.h>
#include <iostream.h>
#pragma comment(lib,"ws2_32.lib")
 

int main(int argccharargv[])
{   
    
char buff[1024];
    
WSAStartup(0x0202,(WSADATA *) &buff[0]);
    
SOCKET my_sock;
    
my_sock=socket(AF_INET,SOCK_STREAM0);
    
sockaddr_in local_addr
    
local_addr.sin_family=AF_INET
    
local_addr.sin_port=htons(777); 
    
local_addr.sin_addr.s_addr=0;
    
    
bind(my_sock,(sockaddr *) &local_addrsizeof(local_addr));
    
listen(my_sock,0x200);
    
    
sockaddr_in client_addr;
    
int size_addr sizeof(client_addr);
    
char buffer[256];
    while(
SOCKET ozh=accept(my_sock,(sockaddr *) &client_addr, &size_addr) )
    {
     if(
ozh<0)
     {
     break;
     
printf("critical error\n");
     
closesocket(ozh);
     
closesocket(my_sock);
     }
     else
     {
     
printf("All right");
     }
    
    
#define sHELLO "Hello, Sailor\r\n" 
   
   
send(ozh,sHELLO,sizeof(sHELLO),0);
   
int i;
   
i=recv(ozhbuff2560);
   
cout << buff;

  
    

    }
   
   
    return 
0;

код клиента:
PHP код:
// my.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <winsock2.h>
#include <iostream.h>
#pragma comment(lib,"ws2_32.lib")
#define port 777
#define SERVERADDR "127.0.0.1"

int main(int argccharargv[])
{   
    
char buff[1024];
    
WSAStartup(0x0202,(WSADATA *) &buff[0]);
    
SOCKET my_sock;
    
my_sock=socket(AF_INET,SOCK_STREAM0);
    
sockaddr_in local_addr
    
local_addr.sin_family=AF_INET
    
local_addr.sin_port=htons(777); 
  

    
HOSTENT *hst;
    if (
inet_addr(SERVERADDR)!=INADDR_NONE)
         
local_addr.sin_addr.s_addr=inet_addr(SERVERADDR);
    else 
      if(
gethostbyname(SERVERADDR))
          ((
unsigned long *)&local_addr.sin_addr)[0]= ((unsigned long **)hst->h_addr_list)[0][0];
    else
    {
    
printf("error dns resolve!");
    }
    if(
connect(my_sock,(sockaddr *)&local_addrsizeof(local_addr)))
    {
    
printf("connect error!\n");
    return -
1;
    }
    
    
printf("join to server.."SERVERADDR "->OK!\n ");     
  
int nsize;
 
  while(
nsize=recv(my_sock,&buff[0],sizeof(buff)-1,0)!=SOCKET_ERROR)
  {
  
buff[nsize]=0;
  
printf("S<=C:"); fgets(&buff[0],sizeof(buff)-1,stdin);
    if(!
strcmp(&buff[0],"quit\n"))
    {
    
printf("exit..");
    
closesocket(my_sock);
    
WSACleanup();
    return 
0;
    }


    
send(my_sock, &buff[0],nsize0); 
  }
    

    
   
   
    return 
0;

компилятор visual c++ 6.0
 
Ответить с цитированием