|
안녕하세요~
뭔가 이상해서요..
해더 public에
SOCKET ServerSk, ClientSk;
struct sockaddr_in Server, Client;
cpp에 이렇게 해놓구 컴파일하면
소켓번호는 항상 똑같구
클라이언트는 프로그램 짜지두 않았는데 접속돼다구 하면서 시작됩니다.
ㅡ.ㅡ
왜이렇죠?
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// socket 생성 성공하면 소켓값을 실패하면 -1 값이 리턴된다.
ServerSk = socket(AF_INET, SOCK_STREAM, 0);
if(ServerSk < 0)
{
ShowMessage("소켓 생성에 실패하였습니다");
return;
}
// 소켓의 구조체 내용
Server.sin_family = AF_INET;
Server.sin_addr.s_addr = inet_addr("203.239.173.69");
// 테스트 후 차환 테스트 ( 자신의 IP를 자동 등록함 )
// Server.sin_addr.s_addr = htonl(INADDR_ANY);
Server.sin_port = htons(8000);
// 위에서 포트 번호를 8000 으로 지정하였지만 0으로 하면 시스템이 배정한
// 포트 번호로 자동 배정된다.
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 소켓을 열고난후 소켓을 시스템의 포트에 연결시켜 준다
ServerSk = bind(ServerSk, (struct sockaddr *)&Server, sizeof(ServerSk));
if(ServerSk < 0)
ShowMessage("포트 연결에 실패하였습니다.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// listen 상태
ServerSk = listen(ServerSk, 5);
if(ServerSk < 0)
StatusBar1->SimpleText = "대기 상태 불가";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
// accept 상태
int len;
StatusBar1->SimpleText = "Server : Waiting connect request";
while(1)
{
ClientSk = accept(ServerSk, (struct sockaddr *)&ClientSk, &len);
ShowMessage(ClientSk);
if(ClientSk > 0)
{
StatusBar1->SimpleText = "Server : Client Connect";
// send시킴
ClientSk = send(ClientSk, "바보", sizeof("바보"),0);
return;
}
}
}
//---------------------------------------------------------------------------
|