수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

수다님 부탁드려요 1: 다수 통신 질문요 ㅠㅠ

지우

2023.04.01

1:1통신 은만들었는데 1:다수 통신으로 변경하고싶습니다.
근데 어떻게 해야할지 모르겟어요 ㅠㅠ
이사이트있는 1:다수 통신 다운받아서 해볼려고 햇는데
어렵네요 ㅠㅠ 부탁드립니다. ㅠㅠㅠㅠㅠㅠㅠ

클라이 언트 입니다.!!
-------------------------------------------------------------------------------------------------------------------#include winsock2.h
#include windows.h
#include resource.h
#define bufsize 256
#define wm_async(wm_user + 1)
#define wm_asyncaccept(wm_user + 3)
#define wm_asyncaccept_1(wm_user + 4)
bool callback dlgproc_1(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback dlgproc_2(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback dlgproc_3(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback dlgproc_4(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback dlgproc_5(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
void errorhandling(char * temp);
bool initsocket(hwnd hwnd);
hinstance g_hinst;
hwnd hwnd_1, hwnd_2, hwnd_3;
lpctstr lpszclass=text(class);
wsadata wsadata;
char message[128];
char message_1[128];
char cle[128] = 클라이언트;
int strlen, ilist;
sockaddr_in servaddr, servaddr_1;
word wver;
socket hsocket, hsocket_1;
char serlp[128]=127.0.0.1, ip_all[128];
char ip_1[4]=127, ip_2[4]=0, ip_3[4]=0, ip_4[4]=1;
int apientry winmain(hinstance hinstance,hinstance hprevinstance
,lpstr lpszcmdparam,int ncmdshow)
{
g_hinst=hinstance;
dialogbox(g_hinst,makeintresource(idd_dialog1), hwnd_desktop, dlgproc_1);
return 0;
}

bool callback dlgproc_1(hwnd hwnd,uint imessage,wparam wparam,lparam lparam)
{
hwnd_1 = hwnd;

switch(imessage) {
case wm_initdialog:
setdlgitemtext(hwnd_1,idc_edit1, ip_1);
setdlgitemtext(hwnd_1,idc_edit2, ip_2);
setdlgitemtext(hwnd_1,idc_edit3, ip_3);
setdlgitemtext(hwnd_1,idc_edit4, ip_4);
return true;
case wm_command:
switch(wparam)
{
case idok:
getdlgitemtext(hwnd_1, idc_edit1, ip_1, 4);
getdlgitemtext(hwnd_1, idc_edit2, ip_2, 4);
getdlgitemtext(hwnd_1, idc_edit3, ip_3, 4);
getdlgitemtext(hwnd_1, idc_edit4, ip_4, 4);
wsprintf(ip_all,%s.%s.%s.%s,ip_1, ip_2, ip_3, ip_4);
enddialog(hwnd_1, 0);
dialogbox(g_hinst, makeintresource(idd_dialog2), hwnd_desktop, dlgproc_2);
return true;
case idcancel:
if(messagebox(hwnd_2, 종료하시겠습니까?,종료,mb_yesno) == idyes){
enddialog(hwnd_1, 0);
}

return true;
}
break;
}
return false;
}
bool callback dlgproc_2(hwnd hwnd,uint imessage,wparam wparam,lparam lparam)
{
hwnd_2 = hwnd;
static hwnd hlist, hedit;
static int i;
switch(imessage) {
case wm_initdialog:
hlist = getdlgitem(hwnd_2, idc_list1);
hedit = getdlgitem(hwnd_2, idc_edit5);
setdlgitemtext(hwnd_2,idc_edit1, ip_1);
setdlgitemtext(hwnd_2,idc_edit2, ip_2);
setdlgitemtext(hwnd_2,idc_edit3, ip_3);
setdlgitemtext(hwnd_2,idc_edit4, ip_4);
setfocus(getdlgitem(hwnd_2,idc_edit5));
sendmessage(hedit, em_setreadonly, true, 0);
i = 1;
sendmessage(hwnd_2,wm_command, idok,null);
sendmessage(hwnd, wm_seticon, true, (lparam)loadicon(g_hinst, makeintresource(idi_icon1)));
return true;
case wm_asyncaccept :
switch(wsagetselectevent(lparam)){
case fd_accept:
if(wsaasyncselect(hsocket, hwnd_2, wm_async, fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
return true;
case fd_read :
strlen = recv(hsocket, message, sizeof(message),0);
ilist = sendmessage(hlist, lb_getcount, 0 ,0);
if(ilist 100)
sendmessage(hlist, lb_deletestring, 0, 0);
sendmessage(hlist, lb_addstring, 0, (lparam)message);
return true;
case fd_close :
closesocket(hsocket);
if(wsacleanup() != 0){
errorhandling(서버가 연결해재하다 실패했습니다);
return false;
}
else{
ilist = sendmessage(hlist, lb_getcount, 0 ,0);
if(ilist 100)
sendmessage(hlist, lb_deletestring, 0, 0);
sendmessage(hlist, lb_addstring, 0, (lparam)서버가 접속을 끊었습니다.);
sendmessage(hedit, em_setreadonly, true, 0);
i = 1;
setdlgitemtext(hwnd, idc_edit5, );
return true;
}
}
return true;
case wm_asyncaccept_1 :
switch(wsagetselectevent(lparam)){
case fd_accept:
if(wsaasyncselect(hsocket_1, hwnd_2, wm_async, fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
return true;
case fd_read :
dialogbox(g_hinst, makeintresource(idd_dialog5), hwnd_desktop, dlgproc_5);
return true;
case fd_close :
closesocket(hsocket_1);
if(wsacleanup() != 0){
return false;
}
else{
ilist = sendmessage(hlist, lb_getcount, 0 ,0);
if(ilist 100)
sendmessage(hlist, lb_deletestring, 0, 0);
return true;
}
}
return true;
case wm_command:
switch(wparam)
{
case idok:
getdlgitemtext(hwnd_2, idc_edit1, ip_1, 4);
getdlgitemtext(hwnd_2, idc_edit2, ip_2, 4);
getdlgitemtext(hwnd_2, idc_edit3, ip_3, 4);
getdlgitemtext(hwnd_2, idc_edit4, ip_4, 4);
wsprintf(ip_all,%s.%s.%s.%s,ip_1, ip_2, ip_3, ip_4);
wver = makeword(2,2);
&if(wsastartup(wver, &wsadata) != 0){
errorhandling(wsastartup() error!);
return false;
}
hsocket = socket(pf_inet, sock_stream, ipproto_tcp);
hsocket_1 = socket(pf_inet, sock_stream, ipproto_tcp);
if(hsocket == invalid_socket){
errorhandling(hsocket() error!);
return false;
}
if(hsocket_1 == invalid_socket){
errorhandling(hsocket() error!);
return false;
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_addr.s_addr = inet_addr(ip_all);
servaddr.sin_port = htons(9190);
memset(&servaddr_1, 0, sizeof(servaddr_1));
servaddr_1.sin_family = af_inet;
servaddr_1.sin_addr.s_addr = inet_addr(ip_all);
servaddr_1.sin_port = htons(9191);
if(connect(hsocket, (sockaddr*)&servaddr, sizeof(servaddr)) == socket_error){
errorhandling(connect() error!);
return false;
}
else{
sendmessage(hedit, em_setreadonly, false, 0);
i = 0;
}
if(connect(hsocket_1, (sockaddr*)&servaddr_1, sizeof(servaddr_1)) == socket_error){
errorhandling(connect() error!);
return false;
}
if(wsaasyncselect(hsocket, hwnd, wm_asyncaccept, fd_accept | fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
if(wsaasyncselect(hsocket_1, hwnd, wm_asyncaccept_1, fd_accept | fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
return true;
case idc_send_1 :
if(i == 1){
}
else{
getdlgitemtext(hwnd_2, idc_edit5, message, 128);
ilist = sendmessage(hlist, lb_getcount, 0 ,0);
if(ilist 100)
sendmessage(hlist, lb_deletestring, 0, 0);
wsprintf(message_1,%s : %s, cle, message);
sendmessage(hlist, lb_addstring, 0, (lparam)message_1);
send(hsocket, message_1, sizeof(message_1), 0);
setdlgitemtext(hwnd_2, idc_edit5, );
setfocus(getdlgitem(hwnd_2,idc_edit5));
}
return true;
case id_nic_name :
dialogbox(g_hinst,makeintresource(idd_dialog3), hwnd_desktop, dlgproc_3);
return true;
case id_message_1 :
dialogbox(g_hinst,makeintresource(idd_dialog4), hwnd_desktop, dlgproc_4);
return true;
case id_exit_1 :
case idcancel:
if(messagebox(hwnd_2, 연결을 끊으시겠습니까?,확인,mb_yesno) == idyes){
closesocket(hsocket);
wsacleanup();
enddialog(hwnd_2, 0);
}
return true;
}
break;
}
return false;
}
bool callback dlgproc_3(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage){
case wm_command :
switch(wparam){
case idok:
getdlgitemtext(hwnd, idc_edit1, cle, 128);
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
bool callback dlgproc_4(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage){
case wm_initdialog:
return true;
case wm_command :
switch(wparam){
case idok:
getdlgitemtext(hwnd, idc_edit1, message, 128);
send(hsocket_1, message, sizeof(message), 0);
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
bool callback dlgproc_5(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage){
case wm_initdialog:
strlen = recv(hsocket_1, message, sizeof(message),0);
setdlgitemtext(hwnd, idc_edit1, message);
return true;
case wm_command :
switch(wparam){
case idok:
dialogbox(g_hinst, makeintresource(idd_dialog4), hwnd_desktop, dlgproc_4);
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
void errorhandling(char *temp)
{
messagebox(null, temp, 알림,mb_ok);
}

클라이 언트 입니다.!!
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------서버 입니다.

#include winsock2.h
#include windows.h
#include commctrl.h
#include resource.h
#define bufsize 256
#define wm_async(wm_user + 1)
#define wm_async_1(wm_user + 2)
#define wm_asyncaccept(wm_user + 3)
#define wm_asyncaccept_1(wm_user + 4)
bool callback maindlgproc(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback maindlgproc_1(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback maindlgproc_2(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
bool callback maindlgproc_3(hwnd hwnd,uint imessage,wparam wparam,lparam lparam);
void errorhandling(char * temp);
bool initsocket(hwnd hwnd);
hinstance g_hinst;
hwnd hwndmain;
lpctstr lpszclass=text(class);
char server[128] = 서버;
static wordwver;
static wsadatawsadata;
static sockethservsock, hservsock_1;
static sockethclntsock, hclntsock_1;
static sockaddr_inclntaddr, clntaddr_1;
static sockaddr_inservaddr, servaddr_1;
static char temp[128], listbuf[128];
static charmessage[128]=hello world!\n, message_1[128];
static int szclntaddr,szclntaddr_1, strlen, ilist, i;
static hwnd hlist, hedit;
handle htimer;
systemtime st;
hwnd hstate;
char stime[128];

int apientry winmain(hinstance hinstance,hinstance hprevinstance
,lpstr lpszcmdparam,int ncmdshow)
{
g_hinst=hinstance;
dialogbox(g_hinst,makeintresource(idd_dialog1), hwnd_desktop, maindlgproc);
return 0;
}
bool callback maindlgproc(hwnd hwnd,uint imessage,wparam wparam,lparam lparam)
{intnbsp;int sbpart[2]={260,350}; //상태란의 크기
hwndmain = hwnd;
switch(imessage) {
case wm_initdialog:
htimer = (handle)settimer(hwnd, 1, 1000, null); //타이머 생성
hlist = getdlgitem(hwnd, idc_list1);
hedit = getdlgitem(hwnd, idc_edit1);
sendmessage(hedit, em_setreadonly, true,0);
sendmessage(hwnd, wm_seticon, true, (lparam)loadicon(g_hinst, makeintresource(idi_icon1)));
i = 1;
//상태란
hstate = createstatuswindow(ws_child | ws_visible, , hwnd, 0);
sendmessage(hstate, sb_setparts, 2, (lparam)sbpart);
wsprintf(listbuf,서버 연결 중...);
sendmessage(hstate, sb_settext, 0, (lparam)listbuf);
//시계

//상태란

return true;
case wm_timer:
getlocaltime(&st); //현재의 시간을 읽어온다.
wsprintf(stime, 오후 %d:%d:%d , st.whour, st.wminute, st.wsecond);
sendmessage(hstate, sb_settext, 1, (lparam)stime);
return true;

case wm_asyncaccept :
switch(wsagetselectevent(lparam)){
case fd_accept :
szclntaddr = sizeof(clntaddr);
hclntsock = accept(hservsock, (sockaddr*)&clntaddr, &szclntaddr);
if(hclntsock == invalid_socket){
errorhandling(accept error);
return false;
}
sendmessage(hedit, em_setreadonly, false,0);
i = 0;
wsprintf(listbuf, %s 접속중 . . ., inet_ntoa(clntaddr.sin_addr));
setdlgitemtext(hwnd, idc_edit2, listbuf);
sendmessage(hlist, lb_addstring, 0, (lparam)클라이언트가 접속했습니다);
if(wsaasyncselect(hclntsock, hwnd, wm_async, fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
return true;
}
return true;
case wm_async :
switch(wsagetselectevent(lparam)){
case fd_read :
strlen = recv(hclntsock, message, sizeof(message),0);
ilist = sendmessage(hlist, lb_getcount, 0,0);
if(ilist = 100)
sendmessage(hlist, lb_deletestring, 0,0);
sendmessage(hlist, lb_addstring, 0, (lparam)message);return true;

case fd_close :
sendmessage(hedit, em_setreadonly, true,0);
i = 1;
setdlgitemtext(hwnd, idc_edit1, );
closesocket(hservsock);
closesocket(hservsock_1);
closesocket(hclntsock);
closesocket(hclntsock_1);
if(wsacleanup() != 0){
errorhandling(연결해재에러);
return false;
}
errorhandling(클라이언트가 연결을 끊었습니다.);
return true;
}
return true;
case wm_asyncaccept_1 :
switch(wsagetselectevent(lparam)){
case fd_accept :
szclntaddr_1 = sizeof(clntaddr_1);
hclntsock_1 = accept(hservsock_1, (sockaddr*)&clntaddr_1, &szclntaddr_1);
if(hclntsock_1 == invalid_socket){
errorhandling(accept error);
return false;
}
wsprintf(listbuf, %s 접속중 . . ., inet_ntoa(clntaddr_1.sin_addr));
setdlgitemtext(hwnd, idc_edit2, listbuf);
if(wsaasyncselect(hclntsock_1, hwnd, wm_async_1, fd_read | fd_close) == socket_error){
errorhandling(wsaasyncselect error);
return false;
}
return true;
}
return true;
case wm_async_1 :
switch(wsagetselectevent(lparam)){
case fd_read :
dialogbox(g_hinst,makeintresource(idd_dialog4), hwnd_desktop, maindlgproc_3);
return true;
case fd_close :
closesocket(hservsock);
closesocket(hservsock_1);
closesocket(hclntsock);
closesocket(hclntsock_1);
if(wsacleanup() != 0){
errorhandling(연결해재에러);
return false;
}
errorhandling(클라이언트가 연결을 끊었습니다.);
return true;
}
return true;
case wm_command:
switch(wparam)
{
case id_set_1 :
wver = makeword(2, 2);
if(wsastartup(wver, &wsadata) != 0){
errorhandling(sever wsastartup error!);
return false;
}
else
errorhandling(sever wsastartup succes!);
hservsock = socket(pf_inet, sock_stream, ipproto_tcp);
hservsock_1 = socket(pf_inet, sock_stream, ipproto_tcp);
if(hservsock == invalid_socket){
errorhandling(server socket0 error!);
return false;
}
else
errorhandling(sever socket succes!);
if(hservsock_1 == invalid_socket){
errorhandling(server socket error!);
return false;
}
else
errorhandling(sever socket1 succes!);
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(9190);
servaddr.sin_addr.s_addr = htonl(inaddr_any);
memset(&servaddr_1, 0, sizeof(servaddr_1));
servaddr_1.sin_family = af_inet;
servaddr_1.sin_port = htons(9191);
servaddr_1.sin_addr.s_addr = htonl(inaddr_any);
if(bind(hservsock, (sockaddr*)&servaddr, sizeof(servaddr)) == socket_error)
{
errorhandling(server binging error !);
return false;
}
else
errorhandling(sever binding succes!);
if(bind(hservsock_1, (sockaddr*)&servaddr_1, sizeof(servaddr_1)) == socket_error)
{
errorhandling(server binging error !);
return false;
}
else
errorhandling(sever binding1 succes!);
if(wsaasyncselect(hservsock, hwnd, wm_asyncaccept, fd_accept) == socket_error)
{
errorhandling(wsaasyncselect error);
return false;
}
else
errorhandling(wsaasyncselect succes);
if(wsaasyncselect(hservsock_1, hwnd, wm_asyncaccept_1, fd_accept) == socket_error)
{
errorhandling(wsaasyncselect error);
return false;
}
else
errorhandling(wsaasyncselect0 succes);
if(listen(hserten(hservsock, 1) == socket_error)
{
errorhandling(listen error);
return false;
}
else
errorhandling(server is listening);
if(listen(hservsock_1, 1) == socket_error)
{
errorhandling(listen1 error);
return false;
}
else
errorhandling(server is listening);

return true;
case id_dis_set_1 :
sendmessage(hedit, em_setreadonly, true,0);
i = 1;
setdlgitemtext(hwnd, idc_edit1, );
closesocket(hservsock);
closesocket(hservsock_1);
closesocket(hclntsock);
closesocket(hclntsock_1);
if(wsacleanup() == 0){
errorhandling(연결해재성공);
}
return true;
case idok:
if(i == 1){
}
else{
getdlgitemtext(hwnd, idc_edit1, message, 128);
ilist = sendmessage(hlist, lb_getcount, 0,0);
if(ilist = 100)
sendmessage(hlist, lb_deletestring, 0,0);
wsprintf(message_1,%s : %s, server, message);
send(hclntsock, message_1, sizeof(message_1), 0);
sendmessage(hlist, lb_addstring, 0, (lparam)message_1);
setdlgitemtext(hwnd, idc_edit1, );
}
return true;
case id_nic_name :
dialogbox(g_hinst,makeintresource(idd_dialog2), hwnd_desktop, maindlgproc_1);
return true;
case id_message_1 :
dialogbox(g_hinst,makeintresource(idd_dialog3), hwnd_desktop, maindlgproc_2);
return true;
case id_exit_1 :
case idcancel:
killtimer(hwnd, 1); //타이머 해제
closesocket(hservsock);
closesocket(hservsock_1);
closesocket(hclntsock);
closesocket(hclntsock_1);
wsacleanup();
errorhandling(연결해재성공);
messagebox(hwnd,서버 프로그램을 종료 합니다,확인,mb_ok);
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
bool callback maindlgproc_1(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage) {
case wm_command :
switch(wparam){
case idok :
getdlgitemtext(hwnd, idc_edit1, server, 128);
enddialog(hwnd, 0);
return true;
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
bool callback maindlgproc_2(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage) {
case wm_initdialog:
return true;
case wm_command :
switch(wparam){
case idok :
getdlgitemtext(hwnd, idc_edit1, message, 128);
send(hclntsock_1, message, sizeof(message), 0);
enddialog(hwnd, 0);
return true;
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
bool callback maindlgproc_3(hwnd hwnd,uint imessage,wparam wparam,lparam lparam){
switch(imessage) {
case wm_initdialog:
strlen = recv(hclntsock_1, message, sizeof(message),0);
setdlgitemtext(hwnd, idc_edit1, message);
return true;
case wm_command :
switch(wparam){
case idok :
dialogbox(g_hinst,makeintresource(idd_dialog3), hwnd_desktop, maindlgproc_2);
enddialog(hwnd, 0);
return true;
case idcancel :
enddialog(hwnd, 0);
return true;
}
break;
}
return false;
}
void errorhandling(char *temp)
{
setdlgitemtext(hwndmain, idc_edit2, temp);
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2702000 select 사용시 label 문제 질문드립니다. 김예쁨 2025-07-19
2701970 실행파일의 이름은 어디서 변경하는지요???? 호빵녀 2025-07-19
2701856 다시 한번 대체텍스트 관련 질문입니다.. (1) 한샘가온 2025-07-18
2701803 저에게 지식의 자비를~ 베푸소서~!! (4) 봄바람 2025-07-17
2701773 메모장 파일을 읽고 출력하는 내용에 관한 질문입니다. 한국드립 2025-07-17
2701748 아이피 변경 부분이요... 날애 2025-07-17
2701665 자바스크립트 // 왜 if 두개를 쓰면 오류가 나죠? (2) 글리슨 2025-07-16
2701636 모바일웹 게시판 만들기 조언좀 부탁드려요 ㅜㅜ (2) 정훈 2025-07-16
2701610 [질문] AS3 액션으로 스테이지 사이즈를 조절할 수 있는 방법이 있을까요? (1) 앵겨쪼 2025-07-15
2701556 input text에 한글을 default 하려면.. (3) 히나 2025-07-15
2701528 apmsetup 접속이.... (5) 곰돌이 2025-07-15
2701506 암호를 *로 (6) 도도한 2025-07-14
2701475 배열최대값 찾기인데; 소스좀 해석해주세요; Orange 2025-07-14
2701397 세로 100% 푸터부분이 바닥에 안붙어요(세로 100% 되는 소스를 썼거든요) 꽃겨울 2025-07-13
2701369 [긴급]로드해온 swf가 갑자기 사라지는 현상..(익스10) (2) 곰돌이 2025-07-13
2701340 [c++]학교 과제 질문이요...... (3) 기쁨해 2025-07-13
2701311 구글 뉴스검색최적화 작업은 누구의 영역인가요? 많은 조언 부탁드려요! 리나 2025-07-13
2701285 아이폰이나 안드로이드 폰 인터넷으로 볼때 배꽃 2025-07-12
2701230 테마 설정하면 밑에 뜨는 글 삭제 (1) 창의적 2025-07-12
2701177 css적용이 안되요~ (6) 다니엘 2025-07-11
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com