소켓 오류좀 봐주세요 무슨오류인지 ㅜ
세이
전역변수
csocket sock, newsock;
bool m_flag=false;
init 할떄 스레드 실행시켜줍니다
{
afxbeginthread(serverthread, null);
afxbeginthread(displaythread, null);
}uint displaythread(lpvoid pparam)
{
int nbyte;
char buf[bufsize];
memset(buf, 0, bufsize);
if(!sock.create())
afxmessagebox(_t(소켓 생성에 실패하였습니다.));
if(!sock.connect(_t(127.0.0.1), 9090))
afxmessagebox(_t(서버 접속이 실패했습니다.));
cnetpapp *papp = (cnetpapp*)afxgetapp();
cnetpdlg *pdlg = (cnetpdlg*)papp-m_pmainwnd;
while(1)
{
if(m_flag == true)
{
m_flag=false;
if((nbyte = sock.receive(buf, bufsize)) 0) // 메시지받기
afxmessagebox(_t(받기 실패.));
buf[nbyte] = 0;
cstring temp;
temp.format(_t(%s), buf);
pdlg-m_content1 += temp; // 글씨 업로드
pdlg-m_content1 += \r\n;
pdlg-m_content2 += temp; // 글씨 업로드
pdlg-m_content2 += \r\n;
pdlg-updatedata(false); // 갱신
}
}
return 0;
} uint serverthread(lpvoid pparam)
{
csocket sock;
if(!afxsocketinit())
afxmessagebox(_t(소켓 초기화에 실패했습니다.));
if(!sock.create(9090))
afxmessagebox(_t(소켓 생성에 실패하였습니다.));
if(!sock.listen())
afxmessagebox(_t(listen에 실패하였습니다.));
if(!sock.accept(newsock))
afxmessagebox(_t(accept 실패 :));
else
afxmessagebox(_t(클라가 접속함));char buf[bufsize];
memset(buf, 0, bufsize);
int nbyte;
while(1)
{
if((nbyte = newsock.receive(buf, bufsize)) 0) // 메시지받기
afxmessagebox(_t(받기 실패.));
buf[nbyte] = 0;
m_flag = true;
}
return 0;
}
void cnetpdlg::onbnclickedbutton1() // 클라1
{
updatedata(true);
char *buf = (lpstr)(lpctstr)m_message1;
if(sock.send(buf, strlen(buf)) 0)
afxmessagebox(_t(보내기 실패));
m_message1 = ;
}그냥 다이얼로그는 단순해요......
화면에 결과물보여줄 텍스트창 하나랑... 메시지 입력할수있는 텍스트창 하나랑 그리고 마지막 전송버튼이거든요..
전송버튼 누르면요............ 위와같이 계속 오류가뜨네요...
여기서 무시버튼누르면 화면에 잘찍히더라고요..... 그치만 저 소켓오류는 대체 못찾겟더라고요 ㅠㅠ 무엇잘못인지
afxmessagebox로 소켓을통해 자료를 잘받았는지 확인해봤는데 메시지는 잘받았어요..
전송도 잘되고 화면에 출력도 잘되는데 왜 전송버튼누르고 저 무시버튼을 눌러야 진행이되는지...전체 흐름
사용자가 텍스트창에 글을적고 전송버튼누르면 그것이 서버스레드로 전송되어 서버스레드가 그것을받으면
디스플 스레드에게 그것을 다시 보내줍니다...... 그녀석은 또 자료를받으면 updatedata를 이용하여 화면에 출력