저는 소켓이 아직 없으므로 안드로이드 클라이언트와 c 서버를 만드는 데 약간의 문제가 있습니다.C 서버가 java/android 클라이언트 메시지를 수신하지 못합니다.
c 서버가 잘 실행되며, 안드로이드 클라이언트도 c 서버에 잘 연결됩니다. 그러나 서버와 통신 할 때 문제가 발생합니다. 간단한 메시지를 보내려고하면 서버가 메시지를받지 못하는 것 같습니다. 전혀
void readMsg(int client){
char buffer[1024];
int n = 0;
memset(buffer, 0, sizeof(buffer));
printf("waiting for message..\n");
while((n=recv(client, buffer, sizeof buffer - 1, 0)) > 0){
printf("recv=%s\n", buffer);
}
printf("n=%d\n", n);
}
그리고 아무것도 표시됩니다 그래서 여기
는 메시지를 대기 서버의 코드입니다. waiting for message..
에 차단되었습니다.
OutputStreamWriter osw;
PrintWriter pw;
try {
osw = new OutputStreamWriter(server.getOutputStream(), "UTF-8");
pw = new PrintWriter(osw, true);
pw.print(msg);
pw.flush();
}catch(IOException ioe) {
ioe.printStackTrace();
}
[편집]
그냥 더 많은 정보를 제공, 기능 readMsg()
가 호출 단지 서버를 시작한 후 한 번 클라이언트가 연결됩니다.
은 자세한 내용을 보려면 여기를 내가 서버에 연결하는 방법입니다
try{
//I am sure that the host and port are correct
Socket server = new Socket(host, port);
}catch(IOException ioe){
ioe.printStackTrace();
}
좋아, 내가 무엇이 잘못되었는지 발견, 나는 서버에 두 번 연결하는 사실이었다. 그 결과 올바른 소켓을 통해 메시지를 보낼 수 없었습니다. 모두를위한 죄송합니다
모든 당신의 도움을 주셔서 감사
[/ 편집]
이미이 사이트에 여러 가지 다른 게시물을보고 몇 가지 솔루션을 시도했습니다.
는
내부
OutputStreamWriter
을 포장하는println
대신print
의를 사용하는 메시지가 클라이언트로부터 전송되는 데 도움이 모든 사전에 감사합니다? 어떻게 서버에서 readMsg() 함수를 호출합니까? – 4pie0예, 메시지는 클라이언트, android 응용 프로그램에서 전송됩니다. – BigFoot
C 서버에 '텔넷'하여 텔넷 프롬프트에서 입력 한 내용을 인쇄 할 수 있습니까? 'telnet servername 1234' 여기서 servername과 1234는 C 서버를 실행하는 호스트이며 prc ... – rolfl