C# 프로그램 질문좀 할께요

안녕하세요 우분투(리눅스)를 태어나서 처음 손대보는 태아입니다 -_-;;
현재 사용버전은 11.10 한글 버전입니다

다름이 아니라 C# 환경을 이용하여 간단한 1:1 echo 프로그램을 만들어서 테스트 중에 있습니다
VM으로 우분투 설치후 윈도우에서 만든 프로그램을 돌렸는데요, 접속은 되는데 한글이 깨져서 전송이 되더라구여…
혹시나 해서 글꼴 문제인가 해서 고딕체로 전부 변경을 하였는데도 똑같은 증상이 발생하네요.

혹시나 해서 Winform으로 전에 만들어놓은걸 사용하였는데도 비슷한 증상입니다…

여기서 질문을 드리자면…

  1. 주위에 듣기론 리눅스가 원래 영어로 된 운영체제라 전송이 안된다… 라고 하는데 사실인지…
  2. 1번이 사실이라면 방법은 없나요?
  3. Client 프로그램을 C#에서 만들어서 안되는 것인가요? 아직 우분투에서 코딩하기엔 명령어도 해매는중이라 어려운 부분이…

답변좀 부탁드리겠습니다…ㅠ

[quote="muner1004":kehage2y]안녕하세요 우분투(리눅스)를 태어나서 처음 손대보는 태아입니다 -_-;;
현재 사용버전은 11.10 한글 버전입니다

다름이 아니라 C# 환경을 이용하여 간단한 1:1 echo 프로그램을 만들어서 테스트 중에 있습니다
VM으로 우분투 설치후 윈도우에서 만든 프로그램을 돌렸는데요, 접속은 되는데 한글이 깨져서 전송이 되더라구여…
혹시나 해서 글꼴 문제인가 해서 고딕체로 전부 변경을 하였는데도 똑같은 증상이 발생하네요.

혹시나 해서 Winform으로 전에 만들어놓은걸 사용하였는데도 비슷한 증상입니다…

여기서 질문을 드리자면…

  1. 주위에 듣기론 리눅스가 원래 영어로 된 운영체제라 전송이 안된다… 라고 하는데 사실인지…
  2. 1번이 사실이라면 방법은 없나요?
  3. Client 프로그램을 C#에서 만들어서 안되는 것인가요? 아직 우분투에서 코딩하기엔 명령어도 해매는중이라 어려운 부분이…

답변좀 부탁드리겠습니다…ㅠ[/quote:kehage2y]

흠 아마도…

[code:kehage2y]
System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(~~)
[/code:kehage2y]

이런식으로 버퍼에서 읽어보세요

[quote="sibulamy":s0vhdyb0][quote="muner1004":s0vhdyb0]안녕하세요 우분투(리눅스)를 태어나서 처음 손대보는 태아입니다 -_-;;
현재 사용버전은 11.10 한글 버전입니다

다름이 아니라 C# 환경을 이용하여 간단한 1:1 echo 프로그램을 만들어서 테스트 중에 있습니다
VM으로 우분투 설치후 윈도우에서 만든 프로그램을 돌렸는데요, 접속은 되는데 한글이 깨져서 전송이 되더라구여…
혹시나 해서 글꼴 문제인가 해서 고딕체로 전부 변경을 하였는데도 똑같은 증상이 발생하네요.

혹시나 해서 Winform으로 전에 만들어놓은걸 사용하였는데도 비슷한 증상입니다…

여기서 질문을 드리자면…

  1. 주위에 듣기론 리눅스가 원래 영어로 된 운영체제라 전송이 안된다… 라고 하는데 사실인지…
  2. 1번이 사실이라면 방법은 없나요?
  3. Client 프로그램을 C#에서 만들어서 안되는 것인가요? 아직 우분투에서 코딩하기엔 명령어도 해매는중이라 어려운 부분이…

답변좀 부탁드리겠습니다…ㅠ[/quote:s0vhdyb0]

흠 아마도…

[code:s0vhdyb0]
System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(~~)
[/code:s0vhdyb0]

이런식으로 버퍼에서 읽어보세요[/quote:s0vhdyb0]

아 잘못된 정보를…

아 문자셋 문제는 아니고 아마도 new line 이 windows 와 unix 에서 다르기 떄문일 것입니다.

유닉스 환경에서는 \n 이 new line 이고 windows 에서는 \r\n 이기 때문일거예요.

자바에서 비슷한 문제가 있었는데 아마 이를 해결해주는 함수가 있었던 것으로 기억합니다.

답변 주셔서 감사합니다. ㅎ 처음 답변을 보고 열심히 코딩을 수정하고 있었네요 ㅋㅋ…
한번 \n쪽을 알아보겠습니다 감사합니다 ㅎ

아 추가로 Server 소스 한번 올려용~

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//소켓 통신을 위한 선언====
using System.Net.Sockets;
using System.Net;
//===================

namespace socket_test_1024
{
class Program
{
static void Main(string[] args)
{
IPEndPoint IPendPort = new IPEndPoint(IPAddress.Any, 7000);

        Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        //bind 및 listen
        server.Bind(IPendPort);
        server.Listen(20);

        Console.WriteLine("============================");
        Console.WriteLine("==========서버시작==========");
        Console.WriteLine("============================");
        Console.WriteLine("========Client 접속 대기====");
        Console.WriteLine("============================");

        Socket client = server.Accept();

        IPEndPoint ip = (IPEndPoint)client.RemoteEndPoint;
        Console.WriteLine("{0}Address, {1}Port", ip.Address, ip.Port);

        //받을 메세지 초기화
        string buf = "";

        while (true)
        {
            //받을 데이터 그릇 및 receive
            byte[] data = new byte[24];

            if (client.Receive(data) != 0)
            {
                buf = Encoding.Default.GetString(data);
                Console.WriteLine("Receive Message ==== " + buf);
            }
            else
            {
                Console.WriteLine("no Receive");
                break;
            }

            byte[] SendData = Encoding.Default.GetBytes(buf);
            client.Send(SendData);
        }

        client.Close();
        server.Close();
    }
}

}

new line 보다는 기본 인코딩 문제일것 같은데요.

우분투나 맥등은 기본으로 UTF-8을 사용하지만
윈도는 기본으로 x-windows-949를 사용하기때문에 발생하는 문제 같습니다.

new line 때문에 인코딩이 깨진다는 문제는 들어본적이 없네요.

그러면 C#코드에서 유니코드 적용후에 프로그램을 다시 한번 돌려봐야겠네요 ㅎ

[quote="z980":12buqovq]new line 보다는 기본 인코딩 문제일것 같은데요.

우분투나 맥등은 기본으로 UTF-8을 사용하지만
윈도는 기본으로 x-windows-949를 사용하기때문에 발생하는 문제 같습니다.

new line 때문에 인코딩이 깨진다는 문제는 들어본적이 없네요.[/quote:12buqovq]

시간이 안나서 못하다가 지금에서야 확인해봣습니다 ㅋㅋ
역시 문제는 유니코드 였던거네요.
우분투에서 코딩하는 작업이 아직 어렵게 느껴져 윈도우에서 Client / Server 둘다 수정작업했고
기존에 Byte로 그냥 받는것을 Encoding 이용해서 수정하였습니다

byte[] data = new byte[1024]; 요거를
byte[] data = Encoding.UTF8.GetBytes(Console.ReadLine()); 이렇게 바꾸니 정상적으로 한글이 넘어 다니네요 ^^

답변 감사합니다 ㅎ

이제 추가로 윈폼도 한번 만들어 봐야겠습니다. ㅋ