아무생각없이 클라이언트에서 서버로 가는 tcp커넥션을 두개 설정했다가 왜 포트가 다르지 했네 시발..
이게 out-of-band 방식이랑은 다른거같은데 일단 클라이언트에서 서버로 가는 tcp커넥션을 한 호스트당 두개 설정해서 각각 다른종류의 데이터를 보내는거임
내가 생각한 개념은 첫번째 커넥션을 이용해서 명령어(목적지 소켓번호 포함)를 입력하면 서버가 그 패킷을 받고 소스와 목적지 클라이언트에게 각각 커넥션 요청 패킷을 보내서 두 클라이언트가 커넥션을 요청하게 하는 프로그램인데
근데 생각해보면 서버에서는 같은 클라이언트 호스트라도 소켓이 다르다보니 포트번호까지 달라서 공유기를 쓴다거나 또는 단순히 시험삼아 같은 호스트 내에서 데이터를 전송한다 하면
서버에서 accept할때 이 소켓이 한 클라이언트의 2번째 소켓인지 다른 클라이언트의 첫번째 소켓인지 구분이 안되잖아
좀 노가다식으로 패킷 주고받고 하면 구현이 가능할거같긴한데 그렇게 할 겯우 내일 아침되면 내 코드 못알아볼듯
흠 어떡하지
뭐라는거냐.. 그리고 뭘 하고 싶은거냐
난 내가 직접만들어가지고 잘 돌아가는 소켓모듈이 있고.. 만들면서 별다른 의문도 어려움도 느끼지 않았거든?
음... 그러니까.. 기본적으로 클라이언트와 서버간에 단일 tcp커넥션을 구축하는데, 필요에따라 추가적으로 하나의 커넥션을 더 연결한단말야. 근데 서버 입장에선 같은 클라이언트라도 소켓마다 포트번호가 다르니 그걸 어떻게 간단히 구별하냐는거지.
아이피로 구분하는 방법이 있긴하지만 이건 아이피주소가 같을경우(단순히 생각해서 같은 클라이언트에서 시험삼아 전송) 구분이 안되잖아
그런데 인터넷에 소켓소켓 거리는놈들 글보면 무슨 상상력같은걸로 프로그래밍을 하고 있는건가 싶음
사실 나도 내가말하는게 헷갈리네; 쉽게말하면 같은 클라이언트에서 tcp커넥션을 두개 연결하고싶고, 서버에서는 그 2개 커넥션이 하나의 클라이언트에서 왔다는걸 알게 하고싶은데, 포트번호가 다르니 구분이 힘들잖아. 예를들면 공유기를 사용한다던가
그럼 맥어드래스로 구분을 하든지;;
그냥 첫번째 통신과 두번째 통신의 프로토콜을 다르게 설계하면 되잖아.
연결 후 client가 제일 처음에 보내주는 hello packet에서 내가 첫번째 클라이언트입니다, 두번째 클라이언트입니다 의 정보를 실어서 보내주고 그걸 기반으로 구분하면 되지.
복잡할 것도 없음.
ㅋㅋ 위엣놈 요즘 밑에 여기저기 거론되는 ㅅㅅㅅ인가 뭔 깡통같은 해결책을 해결책이라고 말하네.. 그럼 어차피 클라이언트에서 또 내가 첫번째인가 두번째인가 체크해야되잖아
너야말로 난독 인증하지 말고 짜져 있어라. 문제가 뭔지는 알고나 씨부리는 거니?
Server에서는 port를 하나만 쓰고 싶고. 클라이언트가 서버와 통신하는데 통신 도중에 두번째 연결을 맺어서 다른 용도로 통신하고자 하는 거고, 연결이 최초 통신인지 아니면 두번째로 연결한 통신인지 구분하기 위함인데 클라이언트가 내가 연결할 통신이 첫번짼지 두번짼진 당연히 알고 있을 거 아냐 병신새끼야.
Port만 똑같은 걸 쓸 뿐 전혀 다른 목적인 두 개의 통신을 하고 싶고 그 통신을 구분하고 싶다는 건데 당연히 프로토콜에서 구분하는 게 맞지. 땔깜새끼네 저거.
저 병신은 진짜 답이 없다. 무슨 맥 어드레스 같은 소리를 하고 있어 ㅋㅋ
맥 어드레스는 Router-to-Router 간에만 쓰이는 주소여서 라우터 하나라도 거치면 맥 어드레스가 라우터 맥 어드레스로 바뀌어서 전달되는데 그걸로 구분하라고? 미친새끼네 저거.
ㅋ 글쓴이놈은 뭐가 필요한지 뭘할려는지 스스로도 모른다는데 답변도 상상력으로 채워서하네 ㅋㅋ
상상의 나라 프갤 ㅋㅋ
ㅇㅇ 물론 커넥션 셋업 이후에 첫 패킷으로 구분하면 되긴하는데 나는 그냥 서버에서 accept하는순간(첫 패킷을 보내지 않고) 첫번째 소켓인지 두번째 소켓인지 확인하고싶엇는데 이건 안되겠네..
ㅇ // 니 이해력이 딸린 걸 글쓴이 탓으로 돌리지 마라. 글쓴 놈 말이 조금씩 달라지긴 하는데 그건 네트워크 개념이 없어서 그런 거고. 대충 뭘 원하는진 경험적으로 충분히 알 수 있는데. 니 경험이 부족해서 무슨 상황인지 이해가 안 가는 거겠지 븅신아.
백왕님 노가다 발언때문에 저 상처받앗는데 이거 보상가능한가요
거봐. 내가 말한 답변이 글쓴이가 원하던 답변인 게 맞잖아. 씹새끼야.
상상 드립이나 치고 앉아있어. 좆도 모르는 병신새끼가.
네네 니들끼리 잘 놀으세여 는 솔직히 이런 뭐가 뭔지도 글쓴 본인도 모르겠는 글 읽으면 지능떨어지는것같더라 서로 지능 많이 떨구고 놀아 ㅋㅋ
커넥션을 맺는순간 확인이 가능하다면 만사오케인데 따로 프로토콜을 재설계해서 패킷을 보내고 하려니 지금 내 코드를 보면 할일이 꽤 늘어날거같아서 말야
accept() 하는 순간엔 알 수 없지. 그게 클라이언트가 프로그램을 두 개 띄운건지 두번째 소켓일지 서버가 어떻게 암?
그건 불가능함.
뭐하러 프로토콜을 재설계함? ㅋㅋ 그냥 기존 프로토콜을 encapsulation해서 connection 시 hello packet 하나만 보내고 받게끔 추가하면 되는 건데.
가령. 한 포트로 HTTP 서버와 FTP 서버를 동시에 하고 싶다. 그러면 client는 처음에 연결할 때 HELLO FTP 라는 내용의 패킷을 보내고 그 다음 FTP 프로토콜대로 통신하면 되고, HTTP면 HELLO HTTP 라는 내용의 패킷을 보내고 HTTP 프로토콜대로 통신하면 되지.
ㅇ // 병신. 넌 그냥 짜져 있어. 소설 쓰는 건 니 새끼야. 글쓴이 말이 제대로 이해가 안 간다면서 뭐라 답변 쳐 달고 자기 답변만 맞다고 우기는 게 그게 지가 정답인 거라고 소설 쓰는 거 아님? ㅋㅋ
그러네 결국 처음 생각한대로 해야겠군
다들 감사욤
아이피 가지고 구분하는 건 똑같은 컴에서 프로그램을 두 개 킨 건지 아닌지 알 수 없으므로 쓰면 안 됨.
포트번호는 프로그램마다 다른거
ㅇㅇ 포트가 보니까 프로그램뿐만 아니라 tcp소켓도 다르더라. 거기다 클라이언트가 프로세스를 돌리는거 외에도 공유기쓰는 경우가 빈번하다보니 ip만으로 비교가 안되넹
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.