하나의 폼에 서버를 실행하는 버튼이랑 클라이언트 실행 버튼을 같이 넣어놔서 프로그램이 멈춰서 클라이언트를 실행시킬수가 없어요
connect 함수가 실행하지않아 대기하는 중이라 이런거라면 프로그램이 멈추지 않고 버튼을 클릭할수 있는 방법이 있을까요?
라스코니 님이 쓰신 글 :
: 클라이언트는 제대로 동작하고 있나요? 클라이언트에서 connect() 함수가 호출되고 있나요?
:
: kkk 님이 쓰신 글 :
: : 소켓통신을 배우는 중입니다
: : 하나의 pc에서 서버에서 클라이언트로 문자열을 보내는 간단한 코드를 작성하고 있는데요
: : 쉬운 문제인것 같은데 안되는 이유를 모르겠어요
: : 아래 코드가 서버 코드인데요 listen 함수까지는 정상 진행이 된것같은데 accept 함수까지 와서 다음으로 진행이 안됩니다.
: : 프로그램은 멈춰서 먹통이 되구요
: : 이유가 뭔지 모르겠어요 고수님들 도와주세요
: :
: : char message[] = "Hello World!";
: : int szClntAddr;
: : char * addr = 제pc ip;
: :
: : if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
: : {
: : ShowMessage("Server WSAStartup Error");
: : return 0;
: : }
: : servSock = socket(PF_INET, SOCK_STREAM, 0);
: : if(servSock == INVALID_SOCKET)
: : {
: : ShowMessage("Server Socket Error");
: : return 0;
: : }
: : memset(&servAddr, 0, sizeof(servAddr));
: : servAddr.sin_family = AF_INET;
: : servAddr.sin_addr.s_addr = inet_addr(addr);
: : servAddr.sin_port = htons(8000);
: :
: : if(bind(servSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR)
: : {
: : ShowMessage("Server Bind Error");
: : return 0;
: : }
: : if(listen(servSock, 5) == SOCKET_ERROR)
: : {
: : ShowMessage("Server Listen Error");
: : return 0;
: : }
: : szClntAddr = sizeof(clntAddr);
: :
: : clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &szClntAddr); // 이부분까지 와서 진행이 안되고 멈춰있습니다.
: : if(clntSock == INVALID_SOCKET)
: : {
: : ShowMessage("Server Accept Error");
: : return 0;
: : }
: : send(clntSock, message, sizeof(message), 0);
: :
: : closesocket(servSock);
: : closesocket(clntSock);
: : WSACleanup();
: :
: : return 1;
|