2011-09-02 4 views
0

심비안 장치의 j2me 미드 레트에서 Windows (C#) 소켓 서버로 tcp 소켓을 열려고합니다. 서버가 작동하고 몇 달 동안 테스트되었습니다. 는 지금은 (연결할 수 없습니다)는 -34 오류가 밖으로 미들 릿에서J2ME에서 C# 서버로 소켓 연결을 열 수 없습니다.

clientSocketConnection = (SocketConnection) Connector.open("socket://" + ip + ":" + port); 

그것은 단지 시간을 소켓을 열려고 할 때.

한쪽에서 "ServerSocket"을 사용하고 서버가있는 동일한 컴퓨터에서 2 개의 전화기 (에뮬레이트 됨)간에 소켓 연결을 열 수 있으므로 전화에 네트워크 기능과 권한이 있다는 것을 알고 있습니다.

은 어떻게 든 J2ME 소켓이 문제에

listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

모든 힌트가 정말 감사하겠습니다 ....는 C# 대응과 호환되지 않습니다. 또한 서버 쪽에서 다른 유형의 소켓을 사용해야합니까? AdressFamily, SocketType, ProtocolType에 대한 J2ME 소켓 정보를 찾을 수 없습니다.

최근 코멘트로 인해 정보를 추가하는 중입니다. 방화벽이없고 DMZ가 시스템 IP로 구성되어있어 방화벽 문제가 아닙니다. 전화 (에뮬레이트 된)는 인터넷에 액세스 할 수 있으며, 에뮬레이터에서 다른 컴퓨터로 소켓을 열면 "서버"쪽을 찾기 위해 "클라이언트"쪽의 WAN WAN IP를 사용하여 동일한 컴퓨터에서 작동합니다.

+1

"J2ME 소켓은 C#과 호환되지 않는다."다른 문제가 있어야합니다. 대부분 Windows 방화벽 오류 또는 기타 네트워크 보안 문제 일 수 있습니다. – CrazyDart

+0

그 전화의 브라우저에'socket : // ip : port'를 넣어 무슨 일이 일어나는 지 봅니다. (내 생각에는 -34/연결할 수 없습니다) – KevinDTimm

+0

@CrazyDart 방화벽이 없으므로 방화벽 문제가 아닙니다. DMZ는 시스템 ip 용으로 구성됩니다. 실제로 네트워크 모니터와 함께 에뮬레이터의 나가는 연결 attemp를 볼 수 있으며 서버는 로컬 네트 외부의 PC에서 테스트 유틸리티에서 연결을 수락합니다. 어쨌든 Thx 코멘트입니다. – TigerShark

답변

0

이제 해결되었습니다. "localhost"에서 j2me 수신 포트 (ServerPort)를 바인딩하는 것은 이상하게 들리지만 "localhost"에서 .net 수신 포트를 바인딩하는 것과는 다릅니다. 로컬 호스트에서 수신하는 "서버"미들 렛을 만들었을 때 클라이언트가 연결할 수는 있었지만 .net 서버에서 수행했을 때 그들은 연결할 수 없었습니다. "해결책"은 "localhost"를 사용하는 대신 컴퓨터 IP를 하드 코어하는 것이 었습니다. 나는 정말로 이유를 이해하지 못한다. 그러나 이것은 효과가있다. ...

+0

이것은 Windows에서 어댑터에 바인딩하기 때문입니다. 로컬 호스트는 IP를 사용하는 "로컬 네트워크 연결 # 1"을 말하는 것과는 다른 어댑터 및 네트워크 스택입니다. 그것은 거실에서 지하실로 문을 열고 피자 맨 캔트가 왜 정문에 올지 이해하지 못하는 것과 같습니다. – CrazyDart

관련 문제