|
님의 소스는 Winsock API 함수와 ClientSocket 콤포넌트의 퓨전이네요
socket () 함수로 소켓생성을 안해서 10038 메시지가 나온 거구요...
Winsock API를 안쓰면 다음의 4줄로 대체 하시면 그냥 접속 할겁니다.
ClientSocket1->ClientType = ctBlocking;
ClientSocket1->Address = "127.0.0.1";
ClientSocket1->Port = 20000;
ClientSocket1->Active = true;
김봉재 님이 쓰신 글 :
: 소스는 아래와 같습니다.
: 서버는 포트 20000에서 listen 중이구요...
: 클라이언트는 자신의 포트를 6010으로 설정(bind)하고 서버에 연결(connect)을 하는 프로그램입니다.
:
: 근데, 연결을 시도하면 계속 10038 (소켓 아님..) 에러가 나네요...
:
: VC++에서 사용하던 코드를 조금 수정했습니다.
:
: 빌더로는 소켓을 처음 쓰는데.. 잘안되네요...
: ------------------
: sockaddr_in Addr = {0};
: Addr.sin_family = PF_INET;
: Addr.sin_addr.s_addr = INADDR_ANY;
: Addr.sin_port = htons(6010);
: bind(ClientSocket1->Socket->SocketHandle,(sockaddr*)&Addr,sizeof(Addr));
:
: struct sockaddr_in To={0};
: To.sin_family=PF_INET;
: To.sin_port=htons(20000);
: unsigned long nAddr=inet_addr("127.0.0.1");
: To.sin_addr.S_un.S_addr=(int)nAddr;
: if(connect(ClientSocket1->Socket->SocketHandle,(struct sockaddr*)&To,sizeof(struct sockaddr)))
: {
: char szTmp[200];
: sprintf(szTmp,"Failed to connect the object!,error no:%d",::WSAGetLastError());
: ::MessageBox(0,szTmp,"Error",MB_OK+MB_ICONERROR);
: closesocket(ClientSocket1->Socket->SocketHandle);
: ::WSACleanup();
: }
|