2013-10-31 6 views
1

글쎄, 나는 파이썬에서 소켓 프로그래밍을하는 동안 문제가있다.파이썬 소켓 클라이언트와 서버

소켓과 관련된 작업은 클라이언트 소켓을 만들고 서버에 HTTP GET 요청을 보내고 서버에서 응답을받는 것입니다. 그것은 잘 작동합니다.

내 새로운 아이디어는 하나의 송신, 하나의 수신이라는 두 개의 소켓으로 처리하려고한다는 것입니다.

보내는 소켓은 평소와 같이 놀랍지 않습니다. 수신 소켓은 송신 소켓에서 사용하는 ipaddress에 바인드하는 서버입니다.

문제는 원격 서버에서 응답을받을 수 없다는 것입니다. wireshark를 사용하여 원격 서버가 여전히 소켓을 보내는 데 사용되는 포트로 데이터를 되돌려 보냅니다. 그러나, 그것은 사용중인 이후로 그 포트에 수신 소켓을 바인딩 할 수 없습니다.

어쨌든 두 개의 소켓으로 시나리오를 구현할 수 있습니까? raw_socket을 사용하여 시스템 네트워크 프로토콜을 무시해야합니까?

+0

은 어쩌면 [zeromq] (http://zeromq.org/) 당신을 위해 무언가이다. 그게 전부 당신에게 불쾌한 소켓 물건을 추상합니다. – RickyA

+0

왜 이렇게 확장 할 수 있습니까? 소켓 2 개를 사용하면 어떤 이점이 있습니까? 마지막으로 기존 서버에서이 작업을 수행하려고합니까? 아니면 서버를 동일한 2 소켓 프로토콜로 수정하고 있습니까? –

답변

0

아니요, 수신 소켓을 고유 한 송신 소켓과 동일한 주소에 바인딩 할 수 없습니다. relevant Linux man page에서

:

하나 개의 IP 소켓

는 특정 지역 (주소, 포트) 쌍에 결합 할 수있다.

+0

나는 당신이 옳다고 믿습니다. 그러나, 나는 이것이 가능하다고 확신합니다. 내가 기술 한 것과 정확히 똑같은 것은 아닙니다. 적어도 HTTP와 TCP를 우회해야한다고 생각합니다. TCP가 다중화를 처리하고 HTTP가 그 상위에 있기 때문입니다. IP에 대해서는 확실하지 않습니다. 간단히 말해서,이 작업을 수행 할 수 있습니다. 나는 그것을 알아낼 것이고, 여기에 약간의 힌트를 게시 할 것이다. 그것을하는 데 며칠이 걸릴 수도 있습니다. –

관련 문제