파이썬 (나중에 c에있을 수도 있음)과 TCP 소켓을 사용하여 로컬 네트워크 채팅 프로그램을 만들려고합니다.서버와 클라이언트 파이썬 소켓을 결합합니다.
내 의도는 들어오는 메시지의 현재 컴퓨터 주소에서 서버가 수신 대기하도록하고 클라이언트에이를 릴레이하는 것입니다 (아직 확실하지 않은 방법). 클라이언트는 로컬 연결에서 활성 서버로 메시지를 보낼 수있는 간단한 GUI입니다. 실제로이 설정은 노드 네트워크의 일부를 형성합니다.
서버와 클라이언트를 같은 응용 프로그램에 둘 수도 있습니다. 스레드를 사용하지 않는 것이 좋습니다. 연결을 기다리는 동안 서버가 일시 중지되므로 GUI가 응답 할 수 없습니다.
동일한 응용 프로그램에서 둘 다 가질 수 없다면 서로간에 통신하는 두 개의 응용 프로그램을 가지고 있다고 생각했지만 thread는 두 프로세스를 어느 쪽이든 사용하는 것처럼 더 나은 대안으로 보입니다. 별도의 앱을 가지고 있다면 서버에서 클라이언트로 문자열을 보내 GUI를 업데이트 할 수 있습니까?
원하는 서버에서 클라이언트로 메시지를 보낼 때 발생하는 일종의 이벤트 (클라이언트 측)를 만들 수 있습니까?
또한 서버가 활성 상태인지 (컴퓨터 주소에 연결되어 있고 메시지를 기다리고 있는지) 어떻게 확인할 수 있습니까?
내 서버/클라이언트 관계 모델이 합리적입니까? 어떤 제안?
스택 오버플로에서 비슷한 소켓 질문을 확인했지만 특별히 문제를 해결 한 항목을 찾지 못했습니다. 나는 약간을 놓칠지도 모른다. 그래서 그들이 적합하다고 판명되면 그들에게 나의주의를 돌려 보내라.
이 질문은 매우 유사합니다 : Python socket server: listening to multiple clients, 그러나 그들은 각각 '서버'& 클라이언트가없는 것 같습니다.
참고 : 저는 & 소켓 네트워킹을 처음 사용합니다.
나는 또한 봤 거든 소켓,하지만 둘 다 연결을 위해 열려있는 및 gui 작업 (보낼 수 있도록 처리하는 방법을 잘 모르겠습니다. 하나의 서버를 가지고 있다면 컴퓨터를 실행하는 컴퓨터가 잠자기 상태가되어 일부 클라이언트가 책임을 져야하기 때문에 앱에 서버와 클라이언트 쪽을 사용할 계획입니다. 넌 블로킹 모드에 대한 참조를 정교하게 제공 할 수 있습니까? (이것은 .select()를 사용하여 무엇입니까?) – Ben
정보에 감사드립니다. asyncio를 살펴볼 것입니다. – Ben
".select()?"를 사용하는 것입니다. 예 : select(), poll(), epoll() 등 – KromviellBlack