Привет Я новичок в таких вещах, но вот что я хочу сделать.Socket php server не отображает сообщения, отправленные от клиента android
Я пытаюсь внедрить приложение чата, в котором пользователи будут отправлять свои запросы с веб-сайта и как только сообщения будут отправлены пользователями сайта. Он появится в приложении для Android от владельца сайта, который ответит их запросы. Короче говоря, я хочу реализовать живой чат.
Теперь прямо сейчас я просто пытаюсь отправить сообщения из приложения android на php-сервер. Но когда я запускаю свой php-скрипт из Dreamweaver в Chrome, браузер продолжает загружаться и не показывает никакого вывода, когда я отправляю сообщение от клиента.
Иногда случалось, что скрипт 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";
?>
Android Код:
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();
}
}
});
}
}
Я только что вставили кнопки OnClick код события для Android.Edit текста в текстовом поле, куда я иду, чтобы ввести свой текст , IP-адрес и порт такие же, как в php-скрипте.
Это может быть немного не по теме, вы могли бы получить вдохновение и полезные советы здесь, в моем предыдущем посте. https://stackoverflow.com/questions/29159354/php-socket-with-android/45851814#45851814 И вот загрузка к очень полезному коду, который может вам помочь. http://developersfound.com/PHP_SocketServer_Android_SocketClient.zip – user2288580