간단한 채팅프로그램을 만들고 있거든요
델파이에서 제공하는 소켓을 이용해서요
그런데 클라이언트에서 대화명하고 글을 다른 변수에 넣어서 SendText하는데요
서버에서 하나만 받고 하나는 못받아요
서버에서 구현한거는요
우선 대화명을 레이블에 한번 띄우고요(이것은 값이 제대로 전달되었는지 확인차)
그리고 그 대화명을 옆에 트리창에 띄우는 거에요 어떤 님들이 대화에 참가하는 지 보려구요
그리고 글을 메모 창에 띄우죠
문제는 클라이언트가 서버에 접속할때 이벤트 핸들러를 구현했는데 여기다가 대화명을 변수에 넣고
레이블에 띄우고 트리창에 띄었구요 그리고 서버가 클라이언트 소켓을 읽을 때 글을 메모창에 띄우게
했거든요
이렇게 하면 글은 나오는데 대화명을 못받아요!!
그래서 이번에는 대화명과 글을 서버가 클라이언트 소켓을 읽을 때 이벤트 핸들러를 구현했는데
이러면 대화명을 레이블에 출력하고 트리에도 들어가는데 글이 출력이 안되거든요
이걸 해결할 수 있는 방법 좀 알려주세요
그리고 궁금한 건데요
클라이언트에서 하고 대화명하고 다 스트링값인데요(참고로 이 두개의 값들은 따로 보냈음)
이걸 서버가 어떤식으로 처리하죠?
제가 아직 해보지는 않았지만 소켓을 두개씩 쓰면 되지 않을 까 하는 생각도 해봤는데
그것두 가능한 일인지 알고 싶어요?
코딩한걸 올려야 하는데 모르고 지워버렸네요TT
고수님들의 답변을 기다립니다.
많은걸 알고 있지는 않지만, 도움이 될수 있을까 라는 생각을 글을 씁니다.
먼저 메세지를 보냈는데 메세지가 화면에 안나타난다면 우선...
메세지를 받을때 발생하는 인벤트에서 메세지그대로 출력 해 보세요
그럼 그 문자를 받은 것인지 아닌지 알수 있겠죠.
그리고 메세지를 보낼때의 메세지 포멧을 알려주세요.
대화명과 대화내용을 따로 보냈는지 등 같이 보낸다고 한다면, 토근 또는 크기단위로 의미를 분할해 두었을껍니다. 그것부터 봤으면 좋겠네요
그리고 소켓은 각각의 시스템의 여건에 따라서 메세지 크기 100을 보내면 받을때 100을 다 못받거나 넘게 받거나 100만큼 받을수 있져
그래서 메세지 해더나 또는 메세지 끝을 알리는 토큰등을 다는게 일반적입니다. 그런 부분도 한번 참고 해 보시구여
소켓 두개 사용하는것은 포트만 다르게 한다면 가능합니다 p2p 프로그램을 구현시 일반적으로 소켓을 두개 사용하져 예전에 메신저 만들때 소켓 두개를 이용했었구여.
일단 대략적인 답변은 이렇습니다. 먼저 받는 메세지 부터 바로 화면에 표출해 보시면 확인 할수 있을듯 하네요 그럼 수고하세요