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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 14:08   #1
yandzee
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 13
По умолчанию Unix сокеты и puts

Server
Код:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <strings.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
#define PORT 1552
#define LEN 1024

int main(int argc, char *argv[])
{
	int listen_sock, remote_sock, addr_size;
	struct sockaddr_in local, remote;
	char in[LEN];
	char out[LEN] = "Server";
	
	listen_sock = socket(PF_INET, SOCK_STREAM, 0);
	local.sin_family = AF_INET;
	local.sin_port = htons(PORT);
	local.sin_addr.s_addr = INADDR_ANY;
	bzero(&local.sin_zero, sizeof(local.sin_zero));
	bind(listen_sock, (struct sockaddr*)&local, sizeof(struct sockaddr));
	listen(listen_sock, 10);
	addr_size = sizeof(struct sockaddr_in);
	remote_sock = accept(listen_sock, (struct sockaddr*)&remote, addr_size);
	
	recv(remote_sock, (void*)&in, sizeof(in), 0);
	send(remote_sock, (void*)&out, sizeof(out), 0);
	puts(in);
	close(remote_sock);
	close(listen_sock);
		
	return 0;
}
Client
Код:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define SOMEPORT 1552

#define BUFSIZE 10

#define SERVER_IP "192.168.1.3"

int main(int argc, char *argv[])
{
	int data_socket;
	struct sockaddr_in server_addr;
	struct in_addr server_ip;
	char out_buf[1024] = "Client";
	char in_buf[1024];


	data_socket = socket(PF_INET, SOCK_STREAM, 0);
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(SOMEPORT);
	inet_aton(SERVER_IP, &server_ip);
	server_addr.sin_addr.s_addr = server_ip.s_addr;
	bzero(server_addr.sin_zero, sizeof(server_addr.sin_zero));

	connect(data_socket, (struct sockaddr*)&server_addr, sizeof(struct sockaddr));

	send(data_socket, (void*)&out_buf, sizeof(out_buf), 0);
	recv(data_socket, (void*)&in_buf, sizeof(in_buf), 0);
	puts(in_buf);
	printf("%s", in_buf);
	close(data_socket);

	return 0;
}
Почему puts(in_buf) и puts(in) не выводят сообщения?
P.S. printf тоже не выводит...
yandzee вне форума Ответить с цитированием
Старый 20.12.2010, 14:48   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Отлаживать пробывали?
MaTBeu вне форума Ответить с цитированием
Старый 23.12.2010, 16:07   #3
yandzee
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 13
По умолчанию

Да, пробовал, ничего. Нет, функция выводит строку, просто символы кривые.
yandzee вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С#, сокеты Namolem Общие вопросы .NET 0 06.05.2010 10:53
C#, сокеты Namolem Помощь студентам 0 06.05.2010 10:53
C#, сокеты Namolem Помощь студентам 0 06.05.2010 03:36
Сокеты Pelengeist Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.11.2009 11:09
сокеты cross Работа с сетью в Delphi 2 21.12.2006 18:12