안녕하세요 저는 이런 종류의 초보자입니다.하지만 여기에 내가하고 싶은 것이 있습니다.소켓 PHP 서버가 안드로이드 클라이언트에서 보낸 메시지를 표시하지 않습니다.
사용자가 웹 사이트에서 질문을 보내고 웹 사이트 사용자가 메시지를 보내면 채팅 응용 프로그램을 구현하려고합니다. 사이트 소유자의 안드로이드 모바일 응용 프로그램에 응답합니다 간단히 말해서 나는 라이브 채팅을 구현하고 싶다.
지금 당장 나는 단지 안드로이드 애플 리케이션에서 PHP 서버로 메시지를 보내려고합니다. 그러나 dreamweaver에서 PHP 스크립트를 실행하면 브라우저가 계속로드되며 클라이언트에서 메시지를 보낼 때 출력이 표시되지 않습니다.
가끔은 PHP 스크립트가 내가 안드로이드 (클라이언트)에서 보낸 몇 가지 출력을 보여줬는데.하지만 작동하지 않을 때와 때를 모르겠습니다.
그래서 클라이언트에서 메시지를 보내 자마자 그 메시지를 PHP 스크립트에 표시하고 싶습니다 (반대의 경우도 구현했지만 도움을 얻을 수는 없습니다).
다음은 지금까지 내가 한 일입니다.
PHP 스크립트는 :
는<?php
set_time_limit (0);
$address = '127.0.0.1';
$port = 1234;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Could not bind to address');
socket_listen($sock);
$client = socket_accept($sock);
$welcome = "Roll up, roll up, to the greatest show on earth!\n? ";
socket_write($client, $welcome,strlen($welcome)) or die("Could not send connect string\n");
do{
$input=socket_read($client,1024,1) or die("Could not read input\n");
echo "User Says: \n\t\t\t".$input;
if (trim($input) != "")
{
echo "Received input: $input\n";
if(trim($input)=="END")
{
socket_close($spawn);
break;
}
}
else{
$output = strrev($input) . "\n";
socket_write($spawn, $output . "? ", strlen (($output)+2)) or die("Could not write output\n");
echo "Sent output: " . trim($output) . "\n";
}
}
while(true);
socket_close($sock);
echo "Socket Terminated";
?>
안드로이드 코드 :
public class ServerClientActivity extends Activity {
private Button bt;
private TextView tv;
private Socket socket;
private String serverIpAddress = "127.0.0.1";
private static final int REDIRECTED_SERVERPORT = 1234;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt = (Button) findViewById(R.id.myButton);
tv = (TextView) findViewById(R.id.myTextView);
try
{
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);
}
catch (UnknownHostException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
bt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try
{
EditText et = (EditText) findViewById(R.id.EditText01);
String str = et.getText().toString();
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(str);
Log.d("Client", "Client sent message");
}
catch (UnknownHostException e)
{
tv.setText(e.getMessage());
e.printStackTrace();
}
catch (IOException e)
{
tv.setText(e.getMessage());
e.printStackTrace();
}
catch (Exception e)
{
tv.setText(e.getMessage());
e.printStackTrace();
}
}
});
}
}
난 그냥 Android.Edit 텍스트의 온 클릭 버튼 이벤트 코드를 붙여 넣은 내가 내 텍스트를 입력하기 위하여려고하고 텍스트 상자입니다 . IP 주소와 포트는 PHP 스크립트와 동일합니다.
이것은 이전 주제에서 몇 가지 영감과 유용한 조언을 얻을 수있는 약간의 주제가 될 수 있습니다. https://stackoverflow.com/questions/29159354/php-socket-with-android/45851814#45851814 그리고 여기에 도움이 될만한 유용한 코드가 있습니다. http://developersfound.com/PHP_SocketServer_Android_SocketClient.zip – user2288580