PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/06/15 01:23:39
Name 녹차한잔의여
Subject c언어(리눅스) 형변환 또는 write함수(소켓) 질문입니다.
소켓프로그래밍에서

클라이언트->서버 , 서버->클라이언트 로의 전송시

write(x,buf,strlen(buf));

이런식으로 쓰고 있었습니다. buf는 char배열


그런데 buf가 int형 배열일때는 저렇게 하니 이상한수가 가네요...( ex> int buf[10])
write(x,buf,10);

저 int형 배열을 char로 형변환을 하거나 (이방법을 찾아봤는데... 모르겠네요...)

아니면 write함수에서 int형 배열을 보낼수 있는 방법이 있나요?

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/06/15 01:29
수정 아이콘
좀 막노가다 하실려면 for 루프 도시면서 charbuf[i] = intbuf[i] + 'a'; 하시면 문자형으로 바꿔서 입력됩니다.
10/06/15 01:44
수정 아이콘
write 자체가 byte 단위의 전송일텐데 int 배열을 보내려는 의도가 무엇인가요?
그쪽에서 받아서 다시 int 배열을 새로 만들어 낼 건가요?
아니면 숫자를 보내고 싶은 건가요?
정확하게 int 값자체를 보내려면 상당히 복잡할 것 같네요.
EZrock 님께서 얘기하신 건 char 범위를 벗어나지 않는 작은 숫자에서만 가능할 것 같습니다.
사용자의 의도가 무엇인지 좀 더 분명히 제시하는 것이 구체적인 답변을 얻을 수 있을 것 같습니다
꿀호떡a
10/06/15 01:50
수정 아이콘
int 변수를 char로 변환하시려면 sprintf(string, "%d", some_integers); 와 같이 쓰시면 됩니다. 마치 fprintf를 쓰는 것처럼요.
10/06/15 02:02
수정 아이콘
제가 유닉스에서 C로 개발한지 한참되어서 정확히는 모르겠습니다만 대략 생각나는 걸 말씀드리겠습니다

일단 무식하게 하는 방법은 int 값을 char 배열에 집어 넣어서 보낸뒤에 다시 atoi 로 바꿔주는 수가 있겠네요. 이때는 int 하나마다 구분자를 두거나 아니면 자릿수를 int의 최대값에 해당하게 설정하고 왼쪽을 0으로 패딩하거나 해야겠죠.

두번째로는 확신은 안갑니다만 write(x,buf,10); 하면 실제로 int형 배열이 전송될 거 같습니다.
그런데 int가 4byte인 머신이라면 첫번째와 두번째 배열은 온전히 전송되고 세번째거는 앞의 두바이트만 가겠네요.
만약 10개짜리 배열이라면 write(x,buf,10)가 아니라 write(x,buf,10 * sizeof(int)); 로 해야 모두 전송이 되겠죠.
그리고 받은 곳에서도 이것을 int형 배열에 매핑해주어야 할 것 같네요.
이부분은 제가 테스트해볼수 없는 상황이라 확신할 수는 업습니다
회전목마
10/06/15 04:03
수정 아이콘
마침 C언어 시험땜에 밤생 공부중인데.... 그저 부럽네요 ㅠㅠ
Cazellnu
10/06/15 09:52
수정 아이콘
문제는 바이너리 형태로 데이터를 보내게 되면 엔디안에 신경을 써 주어야 합니다.
같은 시스템에서 보통 하기때문에 간과하기 쉽고또 그냥 넘어가지는 일이 다반사이긴 합니다만..
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
84166 유게에 예고관련글 [17] 진리는나의빛2095 10/06/15 2095
84165 "재능이 없다"라는 말을 들었을 때 어떻게 생각하시나요? [21] 강희최고3464 10/06/15 3464
84164 프로야구질문입니다~ [22] Wow1738 10/06/15 1738
84162 윈도우7에서 라이센스파일이 복사 붙여넣기가 안됍니다 ㅠㅜ [2] Ibiza1663 10/06/15 1663
84161 USB 바이러스 악성코드 질문드립니다. [3] 피티2166 10/06/15 2166
84160 생물 유전 관련 질문입니다 [2] 박진호1395 10/06/15 1395
84159 sky 프로리그 2라운드 결승 후 인터뷰 영상이 남아있나요? [1] 다크씨1517 10/06/15 1517
84158 피지알 유게에 정치적인 글은 금지가 되어 있는데... [5] mangyg2143 10/06/15 2143
84157 나이에 안 맞게.. 아이돌 질문 좀 하겠습니다. [6] Zakk Wylde2385 10/06/15 2385
84156 c언어(리눅스) 형변환 또는 write함수(소켓) 질문입니다. [15] 녹차한잔의여10249 10/06/15 10249
84155 '안된다' 와 '안 된다' 둘 중에 어떤게 맞춤법에 맞나요? [11] Decoris11174 10/06/15 11174
84153 온라인 핸드폰 구매에 도움을 얻고자하는데요 [1] 그래프1298 10/06/15 1298
84151 터치감 좋은 폰 추천좀 해주세요 [12] 촉호파이2198 10/06/15 2198
84150 외장하드에 대해 하나도 모르겠네요. 제글보고 그냥 이거사라고 찍어주세요 [6] Liberal1815 10/06/15 1815
84148 1주일 해외 여행 장소 좀 추천해주세요 [4] wannabein2913 10/06/15 2913
84147 일본 오늘 기미가요 불렀나요? [4] 시나브로2126 10/06/14 2126
84146 무선 공유기추천좀 해주세요 [1] GreeNSmufF1638 10/06/14 1638
84145 경영학과 학생입니다. 고객관리(CRM)에 대해서..ㅜㅜ 도와주세요~ [3] ELLEGARDEN2197 10/06/14 2197
84144 포맷을 하게 되면 필요한 필수 프로그램을 쉽게 다운받을 수 있는 프로그램이 있었는데요 [2] 논트루마2127 10/06/14 2127
84143 이것도 두통인가요? [1] 미소년1503 10/06/14 1503
84141 주택청약 저축이 쓸모가 있을까요? [2] 지바고2215 10/06/14 2215
84140 뉴타운 반대서명, 해도 되는건가요? [2] ㅇㅇ/1675 10/06/14 1675
84138 에시앙님의 동인천-신사 미션 이어서 해도 되나요? [2] 윤성민1953 10/06/14 1953
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로