
11.07.2008, 17:10
|
|
Постоянный
Регистрация: 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 argc, char* argv[])
{
char buff[1024];
WSAStartup(0x0202,(WSADATA *) &buff[0]);
SOCKET my_sock;
my_sock=socket(AF_INET,SOCK_STREAM, 0);
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_addr, sizeof(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(ozh, buff, 256, 0);
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 argc, char* argv[])
{
char buff[1024];
WSAStartup(0x0202,(WSADATA *) &buff[0]);
SOCKET my_sock;
my_sock=socket(AF_INET,SOCK_STREAM, 0);
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_addr, sizeof(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],nsize, 0);
}
return 0;
}
компилятор visual c++ 6.0
|
|
|